熟悉指针和数组的底层逻辑

98 阅读1分钟

1 题目

目标:熟悉指针和数组的底层逻辑

功能:使用指针输出数组元素

描述:通过指针将数组中你那个各个元素值进行打印输出

2 要点

a. 指向数组的指针实现输出数组元素,定义一个指向数组的指针用来灵活操作数组

int a[10];
int *p;
// 指针 p 指向数组的方法,下面两种都是可以的.
// a 本身就是数组的其实地址,&a[0] 也是数组的起始地址
p = ap = &a[0];

b. 指针既是指向变量地址的又是决定指向变量地址的位数的。例如

int p = &a[0];

既是指向数组a的首地址 又是说明了每次指向都int类型的数据,即 4 个字节。

所以,在指定 p 的基类型后,通过指针指向数组,每次 p++ 都是会跳动4个字节,到达下一个位置a[1]。

即:*(p+1) 即取得 a[1] 的数据

3 代码

#include <stdio.h> 
#define N 10 /**
目标:熟悉指针和数组的底层逻辑
功能:使用指针输出数组元素
描述:通过指针将数组中你那个各个元素值进行打印输出
**/
​
​
int main(int argc, char const *argv[]) int a[N]; 
int *p;
printf("请输入 10 个数字: \n");
for (int i = 0; i < N; ++i) {
scanf("%d", &a[i]);
}
printf("\n");
​
for (p = a; p < a+10; ++p){// 指针指向进行数组内容打印
printf("数组中的内容:\n%d\n", *p);
}
return 0;
}

示例结果:

$ gcc ex013.c -o demo
$ ./demo
请输入 10 个数字:
1
2
3
4
5
6
7
8
9
10
​
数组中的内容:
1
2
3
4
5
6
7
8
9
10