哪个网站做贺卡做的好,房产网签查询,怎么查看网站备案号,模板网站建设全过程在写代码的时候难免要把【数组】或者【指针】传给函数#xff0c;那函数的参数该如何设计呢#xff1f;
1 一维数组传参
#include stdio.h
void test(int arr[])//ok?
{}
void test(int arr[10])//ok?
{}
void test(int* arr)//ok?
{}
void test2(int* arr[20])…在写代码的时候难免要把【数组】或者【指针】传给函数那函数的参数该如何设计呢
1 一维数组传参
#include stdio.h
void test(int arr[])//ok?
{}
void test(int arr[10])//ok?
{}
void test(int* arr)//ok?
{}
void test2(int* arr[20])//ok?
{}
void test2(int** arr)//ok?
{}
int main()
{int arr[10] { 0 };int* arr2[20] { 0 };test(arr);test2(arr2);return 0;
} 答案都是ok的。
arr[10]因为传递的是数组的首元素地址首元素是int类型所以接收它的地址是一个 int* 类型也可以用数组int arr[ ]来接收。
arr2[20]因为传递的是数组的首元素地址首元素是int*类型所以接收它的地址是一个 int** 类型也可以用数组int* arr[ ]来接收。
2 二维数组传参
void test(int arr[3][5])//ok
{}
void test(int arr[][])//ok
{}
void test(int arr[][5])//ok
{}void test(int* arr)//ok
{}
void test(int* arr[5])//ok
{}
void test(int(*arr)[5])//ok
{}
void test(int** arr)//ok
{}
int main()
{int arr[3][5] { 0 };test(arr);
}
答案 因为arr[3][5]是一个二维数组传递的是数组的首元素地址是一个一维数组的地址所以接收它的地址是一个 int (*) [5]类型也可以用数组int arr[3][5]来接收。 总结二维数组传参函数形参的设计只能省略第一个[ ]的数字。 因为对一个二维数组可以不知道有多少行但是必须知道一行多少元素。 这样才方便运算。
3 一级指针传参
#include stdio.hvoid print(int *p, int sz){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]);//一级指针p传给函数
print(p, sz);return 0;}
思考
当一个函数的参数部分为一级指针的时候函数能接收什么参数
答案 4 二级指针传参
#include stdio.hvoid 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;}
思考
当函数的参数为二级指针的时候可以接收什么参数