c语言指针

1.const和指针一起用。const修饰它之后的变量或指针符号,与数据类型无关

char buf[256];
char buf2[256];
char * const p = buf;  //指针变量 "p" 是只读的。p的值不能更改。此时p=buf2;是错误的
char const *p = buf;  //指针符号 "*" 是只读的。不能通过p修改p指向的内存,但可以将p指向其他内存地址。此时p[0] = 12;是错误的,但p=buf2;是正确的
const char *p = buf;  //和char const *p相同

2.指向数组的指针 和 指针数组

char (*p)[20];//p是一个指针,指向一个类型为char,元素数量为20的数组
char *p[20];//p是一个指针数组,其元素为指针型数据

3.函数指针

char * (*func)(int );  //参数为int类型,返回值为char类型指针 的函数指针

typedef和函数指针

double * (*func_array[10])(int); //数组,每个元素指向一个函数的指针,该函数的形参为int,返回值为double指针
typedef double * (*FUNC)(int);//返回double指针,使用int形参的函数指针
FUNC func_array[10];    //函数指针数组
double * ((*func_array)[10])(int); //指针,指向一个10个元素的数组,数组的元素是函数指针,函数的形参是int,返回值是double指针
typedef double * (*FUNC)(int);//返回double指针,使用int形参的函数指针
FUNC (*func)[10];//指针,指向有10个元素的数组,数组的每个元素是FUNC类型
//函数指针作为函数的形参和返回值
int (*)(int)  (*func)( double(*)(double) );
typedef int (*FUNC_RET)(int);
typedef double (*FUNC_ATTR)(double);
FUNC_RET func(FUNC_ATTR);

 

posted on 2013-07-04 09:48  jacob1934  阅读(226)  评论(0)    收藏  举报

导航