c语言运行结果

来源:百度知道 编辑:UC知道 时间:2024/05/16 22:01:20
void main() {
int a[10] = {1, 8, 2, 5, 9, 3, 7, 6}, *p;
p = a;
printf("%d\n", (p+=3)[2]);
}
答案:3
我不明白(p+=3)[2]代表什么意思,执行后p指向5,但是p[2]是数组吗?

(p+=3)[2]
==(p+3)[2]
==(a+3)[2]
{
==*((a+3)+2)
==*(a+3+2)
==*(a+5)
}
==a[3+2]
==a[5]

晕了...我自己都想晕了...以前没学懂..现在看得也累..谁来解释下吧..我只是隐约知道一些东西

p+=3 将INT型指针p向后移动3,由于此前p指向a[0],所以p+=3将使p指向a[3],之后以此为基址,取其第[2]个元素,也就是相当于*(p+5)即a[5]

p是一个指针类型的变量,他指向了数组的首地址,那么p+3就把指针指向了5,而p[2]就是3.