开发门户网站多少钱,搜狗推广找谁,北京营销型网站建设费用,wordpress静态文件目录点击蓝字关注我们朋友们#xff0c;到站啦#xff01;指针进阶第四站#xff1a;传参问题0.引例自定义函数里形参的类型#xff0c;要和函数调用中传过去的实参类型相对应test函数里的是int类型#xff0c;我们传过去的参数a也是int类型void test(int n)
{}
int main()
{i…点击蓝字关注我们朋友们到站啦指针进阶第四站传参问题0.引例自定义函数里形参的类型要和函数调用中传过去的实参类型相对应test函数里的是int类型我们传过去的参数a也是int类型void test(int n)
{}
int main()
{int a1test(a);return 0;
}好了现在你已经知道了函数传参的基本概念了吧那么就来分析一下数组传参、指针传参的代码吧1、一维数组传参看看以下函数的代码示例你觉得谁是正确的谁是错误的呢include stdio.h
void test(int arr[])
{}
void test(int arr[10])
{}
void test(int *arr)
{}
void test2(int *arr[20])
{}
void test2(int **arr)
{}
int main()
{int arr[10] {0};int *arr2[20] {0};test(arr);test2(arr2);return 0;
}NO.1 形参使用数组的形式来接收正确NO.2 同样是数组的形式正确需要注意的是数组传参并不会开辟一个新的数组所以函数[ ]里的数字是多少并不影响NO.3 数组名是首元素的地址用指针接收正确NO.4 arr2是一个指针数组(int *arr[20])和原数组对应正确NO.5 数组名是首元素地址arr2的首元素是一个int*类型可以用二级指针来接收正确2、二维数组传参了解完一维数组了那就来看看二维数组以下的函数传参哪些是对的哪些是错的呢void test(int arr[3][5])//一一对应正确
{}
void test(int arr[][])//省略列错误
{}
void test(int arr[][5])//可以省略行正确
{}
void test(int *arr)//二维数组的首元素是第一行
{}//第一行是int(*)[5]类型错误
void test(int* arr[5])//指针数组错误
{}
void test(int (*arr)[5])//数组指针正确
{}
void test(int **arr)//arr不是一级指针的地址错误
{}int main()
{int arr[3][5] {0};test(arr);return 0;
}根据二维数组传参的代码复习以下知识点1二维数组的首元素是第一行2二维数组在定义的时候可以省略行不能省略列第一行的类型是int[5]应该放进 数组指针里3、一级指针传参#include stdio.h
void print(int *p, int sz)//用int*来接受
{int i 0;for(i0; isz; i){printf(%d\n, *(pi));}
}
int main()
{int arr[10] {1,2,3,4,5,6,7,8,9};int *p arr;int sz sizeof(arr)/sizeof(arr[0]);print(p, sz);//一级指针p传给函数return 0;
}4、二级指针传参以下是二级指针传参的基本形式pp是int**类型而p是指针变量的地址要用二级指针来接收#include stdio.h
void test(int** ptr)
{printf(num %d\n, **ptr);
}
int main()
{int n 10;int*p n;int **pp p;test(pp);test(p);return 0;
}再来看如下代码p、pp、arr这三个参数的类型都是二级指针test函数里面要用char**来接收void test(char** p)
{}int main()
{char ch w;char* p ch;char** pp p;char* arr[5];test(p);test(pp);test(arr);return 0;
}arr是指针数组的数组名数组名是数组首元素的地址数组的首元素是char*类型所以要用二级指针来接收5、如何判断参数类型如果我们在写代码的时候不缺定应该用什么类型来接收的时候可以写一个测试代码VS编译器会报错“类型不一致”结语传参问题并不算非常难但我们仍要熟练掌握这样才能避免在写自定义函数的时候出现参数类型不同的bug第四站数组传参到这里就结束啦*声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。戳“阅读原文”我们一起进步