作业帮 > 综合 > 作业

char *p[4]={1,2,3,4}; 而输出是printf("%d",p[0]) ;printf("%d",p[1

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/04/27 12:02:14
char *p[4]={1,2,3,4}; 而输出是printf("%d",p[0]) ;printf("%d",p[1]) ;printf("%d",p[2]) 请问
定义的*P[4] 是什么?还有为什么printf(“%d”,p[0]) 中是输出p[0] 而不是*p[0]呢?p[0]不是地址吗?
答案输出的是:1 2 3
char *p[4]={1,2,3,4}; 而输出是printf(
p的值就是p[0]的地址
也就是p[0] = *p
那*p[0]是什么?
再问: 指向数组的指针?
再答: 还不明白么

# include

int main(void)
{
\x09int a[4] = {1, 2, 3, 4};
\x09int *p = a;

\x09printf("%d\n", p[0]);
\x09printf("%d\n", a[0]);
\x09printf("%d\n", *a);
\x09printf("%d\n", *p);

\x09printf("%d\n", p);
\x09printf("%d\n", a);
\x09printf("%d\n", &p[0]);
\x09printf("%d\n", &a[0]);

\x09return 0;
}

你编译这个程序看看,发现了什么。

说明数组名本身就是指针,他的值存放的是下标为[0]内存的地址,如果你数组和指针没学好的话可以找我要视频教程,讲的很不错 q q 2 8 7 3 8 5 7 1 9