页面

2010年4月10日星期六

C语言的一点东西

1)指针的const,int const *p代表p所指向的内存单元被锁定,int * const p代表p被锁定,即p内存中所存的指向某个int型内存的地址是不能再被改变了。
2)函数指针,函数就像数组一样,函数名本身就是一个指向内存中一段代表的地址,因此调用函数也可以写成(*myFunc)(20),只是太麻烦了,所以简化成myFunc(20),同理声明一个函数指针void (*funcP)(int),给该函数指针赋值funcP = &myFunc或者funcP = myFunc,而通过函数指针调用函数时就可以(*funcP)(20)或者直接funcP(20);同时既然是指针,那函数指针也可以作为一个函数参数传给函数,不过做这之前先要学会给函数指针定义下类型,就像typedef (int*) PIN让PIN代表int*,typedef void(*FuncType)(int)来给函数指针定义出一种类型,名字叫FuncType,然后再声明类型函数指针时可以直接FuncType funcp1,funcp2等,同时函数指针作为函数参数传递时void myFunc(FuncType func,int i),出现函数指针及函数指针能作为函数参数这个突然给C扩展出了好多功能,如回调。
3)指针与引用,引用在初始化时就被指定值且整个运行过程当中不能被重新赋值,而指针没有这些限制,这个表面区别也就说明引用和指针是完全不同的东西,

=====================================================================
结构体
1)定义与使用结构的方式,定义:struct myStruct{},使用:struct myStruct s1。需要注意一点就是struct关键字与结构体名必须放在一起才起作用,当然借助在上文中用过的typedef关键字可以简化这种用法
typedef struct myStruct *PStruct
struct myStruct{}
当然两者可以合并起来使用
typedef struct myStruct
{
} *PStruct
不过需要注意一点,如果在结构内部需要使用自身,则要么使用第一用方式,要么用的地方用struct myStruce的方式而不能使用PStruct,因为有可以在使用的时候结构还没有建完,所以PStruct是无效的

没有评论:

发表评论