它打印3,而我想打印2。当我只增加一次时,我不明白原因。另请告诉我这是否是正确使用指针 t 指针?我刚刚编写了一个示例代码来了解指向指针的指针如何工作。
#include<stdio.h>
void main(){
int a1[] = {1,2,3,4,5,6};
int a2[] = {7,8,9,10,11,12};
int *a3 = a1;
int *a4 = a2;
int **a[2];
a[0] = a3;
a[1] = a4;
printf("%d",*(++(*a)));
}
最佳答案
您将 a 声明为 int**
数组,因此 *a
不是指向 int 的指针,而是指向 int 指针的指针。递增指针会增加其指向的数据类型的大小,因此 ++*a
将 a[0]
处的值增加指针的大小。
你实际上存储在a[0]
中的是一个指向int的指针,而不是一个指向int的指针。这是错误的,编译器应该警告你这一点。在您的体系结构中,指针似乎是 int 大小的两倍,因此增量 ++*a
将两个 int 的大小添加到指针,因此 a[0] 处的值,如果解释为 int*
而不是 int **
,跳过 2。
要获得您期望的结果,请将 a 声明为 int *
数组。
int *a[2];
关于c - 打印指针到指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17540945/