0
点赞
收藏
分享

微信扫一扫

【第一篇博客】记录学习记录

架构大数据双料架构师 2022-02-04 阅读 136
c语言

关注互联网技术岗位校园招聘
数据结构、算法、计算机网络、操作系统
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))

  1. (int *)a是表示把a强制转换成一个int型的指针。a里面存着数组的首地址

  2. 如果以前a是char型,编译器会认为a指向的那一个字节的内存单元是a里面的东西

  3. 由于数组里面存放的数据为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])

举报

相关推荐

【记录人生第一篇博客】

【 记录我的第一篇python学习】

第一篇博客

第一篇csdn博客

ztst的第一篇博客

萌芽:人生第一篇博客

小羊的第一篇博客

0 条评论