#include<stdio.h> int main() { int a[3]={4,5,6}; intp=a; printf("%d,%d,%d\n",a[0],a[1],a[2]); printf("%d,%d,%d\n",*a,*(a+1),*(a+2)); printf("%d,%d,%d\n",p[0],p[1],p[2]); printf("%d,%d,%d\n",*p,*(p+1),*(p+2)); }其中的 printf("%d,%d,%d\n",*a,*(a+1),*(a+2)); 和printf("%d,%d,%d\n",*p,*(p+1),*(p+2)); 有什么区别?
时间: 2024-04-13 17:25:47 浏览: 65
#include<stdio.h>
在这段代码中,`printf("%d,%d,%d\n",*a,*(a+1),*(a+2));`和`printf("%d,%d,%d\n",*p,*(p+1),*(p+2));`两个printf语句实际上是等价的。
- `*a`表示解引用指针a,获取数组a的第一个元素的值。
- `*(a+1)`表示解引用指针a+1,获取数组a的第二个元素的值。
- `*(a+2)`表示解引用指针a+2,获取数组a的第三个元素的值。
同样地,
- `*p`表示解引用指针p,获取数组a的第一个元素的值。
- `*(p+1)`表示解引用指针p+1,获取数组a的第二个元素的值。
- `*(p+2)`表示解引用指针p+2,获取数组a的第三个元素的值。
这两种方式都可以用来访问数组a中的元素,并且结果是相同的。这是因为在这个程序中,指针p被初始化为指向数组a的第一个元素,所以指针p和数组名a可以互换使用来访问相同的数据。
阅读全文