创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
目录
指针知识:
指针操作详解https://blog.csdn.net/TiSg0/article/details/129999819?spm=1001.2014.3001.5501&操作找到地址 *操作获得空间使用权
一、数组名+偏移量操作成员空间
数组名是一个不可改的地址常量,数组名代表第0个元素的地址 不可改变!!
当直接输出数组名,不输出其中的成员时: 数组名就是数组起始空间地址!!!
#include <stdio.h>
int main()
{
int arr[6];
printf("%p\n", arr);
}
打印结果为一个地址值,理解为:数组第0个元素的首地址
数组名+偏移量操作成员空间
#include <stdio.h>
int main()
{
int arr[4]={0,5,6,1};
printf("%d ", *(arr+0));
printf("%d ", *(arr+1));
printf("%d ", *(arr+2));
printf("%d ", *(arr+3));
}
从数组的第0个元素的地址开始,依次增加偏移量产生新的地址,再用*得到其地址对应的空间。
二、深度理解 [ ]
作为运算符的作用:就是指针移动!!! 不要把[ ]当作固定运算符 当作计算过程!!!
[ ] 是计算过程: 参考地址 [ 偏移量 ] === *(参考地址 +偏移量) 拆 [ ] 组 *
一些奇奇怪怪的拆分过程:O_O
#include <stdio.h>
int main()
{
int a[6] = { 1,2,3,4,5,6 };
printf("%d %d\n", a[1], 1[a]);// *(a+1) *(1+a)
printf("%d %d\n", (a + 2)[1], (-1)[a + 4]); //*((a+2)+1) == *(a+3) * ( -1+(a+4)) == *(a+3)
return 0;
}
三、不同方法遍历数组
数组名是指针常量,不能自增操作修改,而指向数组的指针是指针变量可以自增修改操作。
d*p++;