数组的知识点汇总

数组的知识点汇总

1、数组的含义

       数组是一组相同类型元素的集合。

 

2、数组的创建方式

      类型 + 数组名【常量】。例如:int  arr[10];但是,如果是: const int count = 10;  int arr[count];  就不行了。

因为,数组创建下标引用操作符【】中要给一个常量才行,不能使用变量,即使是常变量也不行。

 

3、数组的初始化

       数组的初始化是指:在创建数组的同时给数组的内容一些合理的初始值。

 

4、数组在创建的时候可以指定数组大小,如果不指定数组的大小,那么数组将根据数组元素的个数确定数组的大小。

       例如:int arr1[3] = {0};//未初始化的自动赋0

                  char arr2[] = "abc";

                  char arr3[3] = {'a', 'b', 'c'};

                  char *p = "abcdef";

 

5、数组的存储——连续存储。看图:

 

 

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

 

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

【例】int arr【10】;

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

 

8、内存中的每一个内存单元(字节)对应一个地址。如下图:

 

 

9、数组的数组名其实是数组首元素的地址。

【例】

#define _CRT_SECURE_NO_WARNINGS 1

# include <stdio.h>

# include <stdlib.h>

int main()//一维数组的指针访问

{

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

printf("%p\n", arr);//输出的是数组的首元素的地址

printf("%d\n", *arr);//输出的是数组的首元素的值

system("pause");

return 0;

}

输出为:

 

 

10、数组名+整数可以获得数组每个元素的地址。

【例1】

#define _CRT_SECURE_NO_WARNINGS 1

# include <stdio.h>

# include <stdlib.h>

int main()

{

int arr[10] = { 0 };

int i = 0;

for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)

{

printf("&arr[%d]=%p\n", i, &arr[i]);//数组元素的地址

printf("%p\n", arr + 1);//数组第二个元素的地址

}

system("pause");

return 0;

}

输出为:

 

【例2】

# include <stdio.h>

# include <stdlib.h>

int main()

{

int arr[10] = { 0 };

int i = 0;

int *p_arr = arr;//将数组首元素的地址赋给指针变量

for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

{

*(p_arr + i) = i;//把i的值赋给对应的指针

}

for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

{

printf("%d  ", *(p_arr+i));//输出指针对应的值

}

printf("\n");

system("pause");

return 0;

}

输出为:

 

 

11、二维数组在内存中也是连续存储的。

【例】程序为:

# include <stdio.h>

# include <stdlib.h>

int main()

{

int i = 0;

 

int arr[3][4];

for (i = 0; i < 3; i++)

{

int j = 0;

for (j = 0; j < 4; j++)

{

printf("&arr[%d][%d]=%p\n",i,j,&arr[i][j]);

}

}

system("pause");

return 0;

}

输出为:

 

二维数组存储的示意图,如下图:

 

 

12、在32位的平台上指针的大小是4个字节,64位平台是8个字节。

注:指针可以理解为一个变量,是一个专门用来存放地址的一个变量,通常我们所讲的指针就是指针变量。

 

13、数组名代表整个数组的时候只有两种情况:

    A、sizeof(数组名),这里的数组名表示整个数组。

    B、&数组名,这里的数组名表示整个数组。

 

14、数组作为函数参数的时候,不会把整个数组传递过去,实际上只是把数组的首元素的地址传递过去。所以,即使在函数参数部分写成数组的形式:int arr[]表示的依然是一个指针:int *arr。

【例】

 

结果是1而不是数组元素的个数。

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值