我试图理解C语言中的指针,并尝试给出一个荒谬结果的代码示例。
以下是代码示例:
void main()
{
int *a;
int arr[5] = {1,3,4,5,2};
printf("%d\n", *(arr+1));
a = arr;
printf("Address: %p || Value: %d\n", ++a, *a);
}
好的,所以我希望它输出数组第二个索引的address
和value
,但是不幸的是,输出value
不等于3(第二个索引值数组),而不是正确显示的地址。
这里的问题是前缀++a
表达式不会更新指针变量a
,而稍后在printf函数a
中,dereferenced
的更新值是未使用,因此输出显示数组的第一个索引值。
请帮助我。