函数与数组的相关重点草图

调用函数,就要在栈上开辟空间,那么现在我们来演示一下函数递归在内存中的路线:(函数递归也是自己调用自己的过程)


数组初始化:数组在定义的时候整体初始化【但是不能整体赋值】


数组的一般知识总结:

1  数组创建,[ ] 中必须放常量,不能放变量

2 数组的初始化,是指创建数组的同时赋给数组一些合理的初始值

3 数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定

4 char arr1[] = "abc";              数组里面有: 'a' 'b' 'c'  '\0'    【'\0'】是字符串结束的标志   【'\0' 就是 0 ,把字符 '0' 转义为 0】
   char arr2[3] = {'a','b','c'};      数组里面有三个字符:'a' 'b' 'c'

5  [ ] ,下标引用操作符。它其实就数组访问的操作符

6  数组是使用下标来访问的,下标是从0开始

7 数组的大小可以通过计算得到 :

int arr[10];
int sz = sizeof(arr) / sizeof(arr[0]);

8 二维数组的创建和初始化

int  arr [2][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10} };

int  arr [ ][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10} };      注意:   arr [可以省略 ] [ 不能省略 ]

int  arr1 [2][4] = { {2, 3},  {4, 5} };         实际上是 : { {2, 3, 0, 0},  {4, 5, 0, 0} }

int arr2 [3] [2] = { {1,2}, {3,4} };       实际上是 : { {1,2}, {3,4},{0,  0} }

9 二维数组在内存中的存储和一维数组一样,一次性开辟,元素从低地址到高地址依次连续增大

10 数组作为函数参数

数组作为函数参数的时候,不会把整个数组的传递过去。
实际上只是把数组的首元素的地址传递过去了。

所以即使在函数参数部分写成数组的形式: int arr[ ] 表示的依然是一个指针: int *arr 。

注意:数组传参,如果函数内部需要知道数组元素个数,应该在函数外部算出元素个数,以参数的形式传递给函数。

猜你喜欢

转载自blog.csdn.net/qq_42080151/article/details/83548086