码迷,mamicode.com
首页 > 其他好文 > 详细

《编译原理》上课笔记2

时间:2015-05-10 18:41:32      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

以下主要是面向实验二和实验三的笔记:

2015年04月13日

P11
1.arr,&arr
(arr+1),(&arr+1)
区别:

一个变量对应一个内存

eg.	地址:0x10000	->&arr
	内容:0x20000	->arr

数组是例外的:
1)数组名arr	->&arr[0]  arr[0]->int (数组的首地址)
		  int *	
2)typedef int ARRAY[10]
ARRAY a;//sizeof(a)	->40
&arr			->ARRAY*
sizeof(arr);		->40

3)所以:arr//10000
	(arr+1)//10004
	(&arr+1)//10040


2.P395源代码
C语言约定,从右到左
“实参提升”

int printf(char *fmt,...){
usigned int addr = (usigned int)(&fmt);
addr += sizeof(char*);//1004
double *prt = (double*)addr;
*prt
double h = *((double *)addr);
addr += sizeof(double);
}



3.实验二
variable argument	va_arg 变参

ptr //1
iptr //4

做 int myprintf(const char,...){
		*format
}

技术分享

技术分享

2015年4月27日

1.不是虚方法	Base::h(...);	//静态绑定	编译前
		base ->f(10,20);//动态绑定	运行时

2.
全局变量
int c_data;
class Base{
	int b_data;
	static int c_data;
	void h(int a, int b){}
	virtual void f(int a, int b){}
}


->
struct Base{
	int b_data;
};
void Base_h(Base* this/*非静态,要指向某方法*/,int a, int b)
void Base_f(Base* this/*非静态,要指向某方法*/,int a, int b)


3.
void f(void){}
void g(void){}
typedef void (*FUNC_PTR)(void);
void test(FUNC_PTR ptr){ptr();


int main(){
	test(f);
	test(g);
}

技术分享

 

《编译原理》上课笔记2

标签:

原文地址:http://www.cnblogs.com/Nanphonfy/p/4492560.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!