C-024.数组与函数的关系,属于地址传递
来源:互联网 发布:手机报价软件有哪些 编辑:程序博客网 时间:2024/05/18 00:55
在了解数组与函数之前,先通过以下例子说明:基本数据类型作为函数参数是值传递,函数内部改变值,原变量不变。
void test(int num){ num = 20; printf("%d\n",num);//输出20 printf("%p\n",&num);//地址 0x7fff5fbff78c}int main(int argc, const char * argv[]) { //基本数据类型作为函数参数是作为值传递的,函数内部改变值,原变量不变 int num =10; test(num); printf("%d\n",num);//输出10 printf("%p\n",&num);//地址 0x7fff5fbff7ac return 0;}
数组作为函数参数传递是地址传递,如果在函数中改变数组中某个值,实参的值也会改变
void changArray(int array[]){ //数组作为函数参数传递是地址传递,如果在函数中改变数组中某个值,实参的值也会改变 array[0] = 4; array[1] = 5; array[2] = 6; printf("%p\n",array); //地址0x7fff5fbff7ac}int main(int argc, const char * argv[]) { int arr[3] = {1,2,3}; //初始化值为1,2,3 changArray(arr); printf("%p\n",arr); //地址0x7fff5fbff7ac for (int i = 0; i < 3; i++) { printf("%d\n",arr[i]); } //输出4,5,6 return 0;}
数组做为函数参数的一些注意点:
1、数组元素作为函数参数传递是值传递,和普通变量是一样的
2、数组作为函数参数传递是地址传递,如果改变形参数组的某个元素的值,那么会影响实参数组中该元素的值
3、数组作为函数参数传递会自动转换为指针类型,所以在函数中不能获取形参数组的长度,只能由主调函数传入
void printArray(int array[],int length){ // 当数组作为函数参数传递时候,会被自动转换为指针类型// int length = sizeof(array) / sizeof(int); 所以在函数内部计算不出数组的长度// printf(length); for (int i = 0; i < length; i++) { printf("%d\n",array[i]); }}int main(int argc, const char * argv[]) { int arr[3] = {1,2,3}; int length = sizeof(arr) / sizeof(int);//主调函数先计算长度,通过实参传入被调函数 printArray(arr,length); /* 总结: 1、数组元素作为函数参数传递是值传递,和普通变量是一样的 2、数组作为函数参数传递是地址传递,如果改变形参数组的某个元素的值,那么会影响实参数组中该元素的值 3、数组作为函数参数传递会自动转换为指针类型,所以在函数中不能获取形参数组的长度,只能由主调函数传入 */ return 0;}
0 0
- C-024.数组与函数的关系,属于地址传递
- C/C++ 数组与地址的关系
- C语言函数值传递与地址传递理解
- C语言函数地址传递与值传递和常见的错误理解
- 地址与数组的小关系
- 请问在CODEVISION AVR C中如何在函数中传递数组的地址?
- 请问在CODEVISION AVR C中如何在函数中传递数组的地址?
- C函数的值传递和地址传递
- 关于C数组与指针的关系(主要是长度首地址内容)
- 数组指针、数组首地址与内存的关系
- 数组与函数传递
- 二维数组的作为函数形参的地址传递
- <C语言>函数的值传递与地址传递--以输入三个数并从小到大排列为例
- C语言中与指针相关问题——论数组名和数组名取地址的关系
- c语言中数组中的地址和指针的关系
- 指针 、指针与数组函数的关系
- 数组,指针与函数之间的关系
- C语言地址传递与值传递
- 文章标题
- Android模拟产生事件
- IOS-34-单例设计模式详解
- PHP文件上传类型对照表
- Linux下Tomcat8的安装配置
- C-024.数组与函数的关系,属于地址传递
- 像素
- VS2013使用教程总结(3)---修改VA的注释
- iOS时间和时间戳之间的转化
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- 自定义SeekBar
- iOS开发~CocoaPods使用详细说明
- JSSIP了解-----JS在通讯中的应用(使用sip协议)---阿冬专栏!!
- ios的手势的添加