8.二级指针和三级指针
#define _CRT_SECURE_NO_WARNINGS#includeint main0901(){ int a = 0; int* p = &a; int** pp = &p;//二级指针,指向指针的指针 **pp = 10; printf("%dn", a); return 0;}int main0902(){ int a[10]; int* p = a; p[0] = 0; p[1] = 2; int* b[10]; int** p1 = b; p1[0] = NULL; printf("%lun", sizeof(p1[0])); return 0;}
#define _CRT_SECURE_NO_WARNINGS#includeint main010(){ int a = 0; int* p = &a; int** pp = &p; int*** ppp = &pp;//三级指针 ***ppp = 10; printf("%dn", a); return 0;}
9.指针作为函数参数
函数的参数可以是指针类型 。,它的作用是将一个变量的地址传送给另一个函数 。
void test(int*p);//定义一个函数,形参是int*类型 。
C语言中如果想通过函数内部修改外部实参的值,那么就需要给函数的参数传递这个实参 。
#define _CRT_SECURE_NO_WARNINGS#includevoid swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp;}//形参的值改变后不会影响实参,故使用指针来改变实参的值int main11(){ int a = 1; int b = 2; swap(&a, &b); printf("a=%d,b=%dn", a, b); return 0;}
10.数组名作为函数参数
当数组名作为函数参数时,C语言将数组名解释为指针
如果数组名作为函数参数,那么这个就不是数组名了,而是一个指针变量名 。
当把一个数组名作为函数参数的时候那么会在函数内部就不知道这个数组的元素个数了,需要再增加一个参数来标明这个数组大小 。
#define _CRT_SECURE_NO_WARNINGS#include//void test(int a[])//void test(int a[10])//void test(int *a)//三种写法一致void test(const int *a)//添加const是为了不让函数内部修改数组成员的值{ printf("%lun", sizeof(a)); int* p = (int*)a; p[5] = 100; //a[5] = 50;//err, 有const故不能修改数组成员的值}//当数组名作为函数形参时,其实是这个指针变量名int main() { int a[10] = { 1,2,3,4,5,6,7,8,9,10 }; printf("%lun", sizeof(a)); test(a); for (int i = 0; i < 10; i++) {printf("a[%d]=%dn", i,a[i]); } return 0;}
- 幼儿园大班到一年级语文拼音阅读的过渡 一年级语文拼音阅读训练(人教版)
- 这4种坚果要多吃 什么坚果吃了好处多
- 实用性很强的英语课堂小游戏 好用的英语课堂游戏
- 体验国产天语这款升降摄像头手机 升降摄像头的手机
- 500ml白酒就是1斤酒 500ml酒等于一斤吗
- 为什么英语地位高 英语的为什么
- 学习英语真的有用吗 学英语有用吗?
- 势不可挡的成语含义 势不可挡词语解释
- 成语气冲斗牛的典故 什么是气冲斗牛
- 对于郑州中考外语系套餐的一些看法