[分享]对数组的深入理解
本帖最后由 小可爱~ 于 2016-10-24 12:13 编辑有理解错误的地方请见谅并指出错误
核心:数组名字其本质就是数组指针(数组的指针)
#include <stdio.h>
#include <stdlib.h>
enum Enum
{
ONE = 1,
TWO,
THREE,
FOUR,
FIVE,
SIX
};
void main()
{
int a = { ONE, TWO, THREE, FOUR, FIVE, SIX };
//数组名字其本质就是数组指针(数组的指针) 此源代码的的数组指针步长 3 也就是说 数组指针自增(+1)就是 + 3
printf("*a = %p\n", *a);//数组第一个元素的地址
printf("a = %p\n", a);//同上
printf("*a + 1 = %p\n", *a + 1);//数组第二个元素的地址
printf("*(a + 1) = %p\n", *(a + 1));//数组指针+1相当于加 3 得出的是数组 a的地址
printf("**a = %d\n", **a);
printf("*(*a + 1) = %d\n", *(*a + 1));//自行体会
system("pause");
}
裴冰夏 发表于 2016-10-24 19:28
那此时的a是指a的地址么,那*a+1就是第0行第1个元素的地址?有点晕
恩从一开始的话 那是第二个元素 , 从 0 开始的话那是第一个元素 小可爱~ 发表于 2016-10-24 12:57
这是二级数组
那此时的a是指a的地址么,那*a+1就是第0行第1个元素的地址?有点晕 数组就是一片连续的内存,名字标识的就是这块内存的起始位置,标识整块内存。 *a + 1
不是指a的值+1么 裴冰夏 发表于 2016-10-24 12:45
*a + 1
不是指a的值+1么
这是二级数组 以前都没注意,我发现我看懂了*(a + 1)了。 可以再来一些 混合的形式 c学的都忘了差不多了 谢谢楼主分享,学习了 指针在编程中实在是太重要了
页:
[1]
2