首页 > 其他 > 详细

《编译原理》上课笔记2

时间:2015-05-10 18:38:52      阅读:204      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!