标签:arr 函数 记录 第一篇 博客 int 数组 test
关注互联网技术岗位校园招聘
数据结构、算法、计算机网络、操作系统
c/java从表层到底层
leetcode每日一题
思维
学习内容(简记)
(一)写博客
参考
(41条消息) 【小白】如何写好自己的一篇CSDN博客(美化1)_cungudafa的博客-CSDN博客_csdn博客怎么写博文
(二)数组传参
1.一维数组
(1)传数组(test(arr))函数处理(int test(int a[]))不改变原数组值
(2)创建指针指向数组(int arr[5] ,*p; p=arr;)
传数组指针(test(*p))函数处理(int test(int *p))会改变原数组值
2.二维数组 创建arr[5][6] n=5 m=6
(1)传数组(test(arr)) 函数(int test(int a[][5]))列不可省略
函数处理不改变原数组值
(2)传数组指针(test(*p)) 函数(int test(int *p)),传输后转为一维数组
函数处理会改变原数组值
(3)传数组指针(test((int *)arr))函数(int test(int *p))
-
(int *)a是表示把a强制转换成一个int型的指针。a里面存着数组的首地址
-
如果以前a是char型,编译器会认为a指向的那一个字节的内存单元是a里面的东西
-
由于数组里面存放的数据为int型,把a转换成int型,编译器会认为a指向的连续四个字节里的东西都是a里面的。
引用例:
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
printf("%d ",*(p+n*i+j));
}
}
传数组指针( test((int **)arr)) ) 函数(int test(int **p))
引用例:
for(i = 0; i < 5; i++){
for(j = 0; j < 6; j++){
printf("%d ",*((int *)p+6*i+j));
//int *p指向arr[0][0]+6*i指向第几行+j指向第几列
}
}
参考
(41条消息) C语言数组当参数传递_Laoynice的博客-CSDN博客_c语言传递数组
回顾知识
数组传参不能在自定义函数中计算数组大小(即个数(sizeof(arr)/arr[0])),所以要用原数组计算后传参过去
有时候可以尽量不用数组、不用创建变量,节省存储空间。
例如:简单计算结果不需要开辟许多空间,直接使用算式代替。
未知存储具体大小的数组(arr[10000000])
标签:arr,函数,记录,第一篇,博客,int,数组,test 来源: https://blog.csdn.net/qq_62583128/article/details/122780913
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。