C语言 |
您所在的位置:网站首页 › c语言中实参和形参 › C语言 |
一.知识点
1. 函数指针的定义
int (*p)();//p为指向函数的指针,该函数返回一个整型值 先确定函数返回值,再写两个括号. 例: #include int sum(int a,int b); int main(void){ int (* pfun)(int ,int); pfun=sum;//将sum的入口地址赋给pfun; //下面的写法都是对的 printf("%d\n",sum(1,2)); printf("%d\n",pfun(1,2)); printf("%d\n",(*sum)(1,2)); printf("%d\n",(*pfun)(1,2)); return 0; } int sum(int a,int b){ return a+b; } int a[4][5]; int *(*p[5]) (void *,int **) = {fun, fun, fun, fun, fun};//数组里面每一个元素都是函数指针 int (*p[4])[5] = {a, a+1, a+2,a+3};//数组里面每一个元素都是行指针数组指针 int (*p)[5];//行指针 2.实参形参的传递实参是一个变量p,传递值给形参,则函数内部无论怎么做 都不会改变实参p的值,只有传地址才可以改变值. 实参是一个指针变量p,传递给形参,则函数内部无论怎么做 都不会改变实参p的指向,但可以通过地址改变指向的内容. //1.实参是-一个1级指针的地址,形参就是** //2.当实参为指针数组时,形参也要用** 3. 回调函数下层调用上层 int atexit(void (*function)(void)); void fun2(){ printf ("he1lo world\n") ; } int main (void){ atexit (fun2) ; printf ("1234567\n") ; return 0; } 结果 1234567 he1lo world 4. const const int a=10;//常量 char*p;//可以通过p去访问(读取,修改)内存 const char*p;//这个指针时只读指针,它可以指向有效地址,可以指来指去 char const*p;//无法通过这个指针去修改内存,可以读取 char *const p//常量指针,一般都需要初始化,指向后无法再向其他地方,但是可以通过 //这个指针变量去修改内存。 const char* const p;//只读常量指针,不能指来指去,也无法通过这个指针去修改内存 char const const p 5. **p的使用int **p; //二级指针指向的1级指针是int *类型 (1)用于指向1级指针,是指针的指针 int a =10: int *q=&a; p=&q; //a==*q==**p //&a==q==*p(2)p可以指向于对应的指针数组 int *b[10]; p=b;错误用法: int c[3][4]; int **p=c;二维数组要行指针(数组指针—int (*p)[4])来指向 但是可以使用 int** p = (int**)malloc(sizeof(int*) * SIZE); for(int i = 0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |