C语言之指针与数组数组与内存数组指针数组指针与普通指针对比能否被=号赋值数组指针之间与指针的等效关系如何邪修理解记忆指针,数组指针与sizeofsizeofsizeof计算数组指针和数组sizeof与数组指针的注意事项数组与内存数组是一组相同类型的元素的集合,这些元素在内存中是连续的,可以通过数组名和下标的方式进行访问。#includestdio.hintmain(void){inta[5]={1,2,3,4,5};for(inti=0;i5;i++){printf("%p ",a[i]);printf("\n ");}return0;}使用上述的代码,可以查看数组中每个元素的起始地址,如上图所示,每一个地址都是连续的,它们都刚好间隔4个字节也就是一个int类型的大小。在图中,a和a[0],a+i和a[i]是等效的,可以自己去尝试一下打印其内容查看。数组指针数组指针是指数组在内存中的起始地址,数组元素的地址是指数组元素在内存中的起始地址。 一维数组的数组名为一维数组的指针。数组指针与普通指针对比能否被=号赋值一维数组的数组名为一个常量,不能被修改,也就是说不能作为=号的左值。而指针是变量,可以在=号左边被进行赋值操作。常量被存放在数据段(data段),data段为只读段是不可以对其进行写操作的。简单来说,p++;可以a++;是不行的。也可以这样理解,以上述的代码为例假设int*p=a,p的类型为int *,而a的类型为int *,但是由于它是数组指针,可以将其理解为隐藏了一个const,也就是说a是一个被const修饰的int *,其值是不能被修改的。等价于const int *p;数组指针之间与指针的等效关系数组指针之间与指针的等效关系,包括获取内存中的值等效和读取指针存储的地址的方式等效。 1.p[i],a[i],*(a+i),*(p+i)取值等效 2.p+i,a+i,p[i],a[i]获取地址等效 实验代码:#
邪修C语言之指针与数组
C语言之指针与数组数组与内存数组指针数组指针与普通指针对比能否被=号赋值数组指针之间与指针的等效关系如何邪修理解记忆指针,数组指针与sizeofsizeofsizeof计算数组指针和数组sizeof与数组指针的注意事项数组与内存数组是一组相同类型的元素的集合,这些元素在内存中是连续的,可以通过数组名和下标的方式进行访问。#includestdio.hintmain(void){inta[5]={1,2,3,4,5};for(inti=0;i5;i++){printf("%p ",a[i]);printf("\n ");}return0;}使用上述的代码,可以查看数组中每个元素的起始地址,如上图所示,每一个地址都是连续的,它们都刚好间隔4个字节也就是一个int类型的大小。在图中,a和a[0],a+i和a[i]是等效的,可以自己去尝试一下打印其内容查看。数组指针数组指针是指数组在内存中的起始地址,数组元素的地址是指数组元素在内存中的起始地址。 一维数组的数组名为一维数组的指针。数组指针与普通指针对比能否被=号赋值一维数组的数组名为一个常量,不能被修改,也就是说不能作为=号的左值。而指针是变量,可以在=号左边被进行赋值操作。常量被存放在数据段(data段),data段为只读段是不可以对其进行写操作的。简单来说,p++;可以a++;是不行的。也可以这样理解,以上述的代码为例假设int*p=a,p的类型为int *,而a的类型为int *,但是由于它是数组指针,可以将其理解为隐藏了一个const,也就是说a是一个被const修饰的int *,其值是不能被修改的。等价于const int *p;数组指针之间与指针的等效关系数组指针之间与指针的等效关系,包括获取内存中的值等效和读取指针存储的地址的方式等效。 1.p[i],a[i],*(a+i),*(p+i)取值等效 2.p+i,a+i,p[i],a[i]获取地址等效 实验代码:#