- 值传递
#include<stdio.h>// 和一位数组一样, 只看形参是基本类型还是数组类型// 如果是基本类型在函数中修改形参不会影响实参voidchange(charch){ ch='n'; } intmain() { charcs[2][3] = { {'a', 'b', 'c'}, {'d', 'e', 'f'} }; printf("cs[0][0] = %c\n", cs[0][0]); // achange(cs[0][0]); printf("cs[0][0] = %c\n", cs[0][0]); // areturn0; }
- 地址传递
#include<stdio.h>// 和一位数组一样, 只看形参是基本类型还是数组类型// 如果是数组类型在函数中修改形参会影响实参voidchange(charch[]){ ch[0] ='n'; } intmain() { charcs[2][3] = { {'a', 'b', 'c'}, {'d', 'e', 'f'} }; printf("cs[0][0] = %c\n", cs[0][0]); // achange(cs[0]); printf("cs[0][0] = %c\n", cs[0][0]); // nreturn0; }
#include<stdio.h>// 和一位数组一样, 只看形参是基本类型还是数组类型// 如果是数组类型在函数中修改形参会影响实参voidchange(charch[][3]){ ch[0][0] ='n'; } intmain() { charcs[2][3] = { {'a', 'b', 'c'}, {'d', 'e', 'f'} }; printf("cs[0][0] = %c\n", cs[0][0]); // achange(cs); printf("cs[0][0] = %c\n", cs[0][0]); // nreturn0; }
- 形参错误写法
voidtest(charcs[2][]) // 错误写法 { printf("我被执行了\n"); } voidtest(charcs[2][3]) // 正确写法 { printf("我被执行了\n"); } voidtest(charcs[][3]) // 正确写法 { printf("我被执行了\n"); }
- 二维数组作为函数参数,在被调函数中不能获得其有多少行,需要通过参数传入
voidtest(charcs[2][3]) { introw=sizeof(cs); // 输出4或8printf("row = %zu\n", row); }
- 二维数组作为函数参数,在被调函数中可以计算出二维数组有多少列
voidtest(charcs[2][3]) { size_tcol=sizeof(cs[0]); // 输出3printf("col = %zd\n", col); }
最后,如果有任何疑问,请加微信 leader_fengy 拉你进学习交流群。
开源不易,码字不易,如果觉得有价值,欢迎分享支持。