打印指针指针

Bha*_*kar -6 c pointers

它打印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)));



}
Run Code Online (Sandbox Code Playgroud)

Jon*_*oni 6

你声明了一个数组int**,所以*a不是指向int的指针,而是指向int的指针.增加指针会增加它指向的数据类型的大小,因此++*a将at值增加到a[0]指针的大小.

你实际存储的a[0]是指向int的指针,而不是指向int的指针.这是错误的,编译器应该已经警告过你.在您的体系结构上,似乎指针的大小是int的两倍,因此增量++*a会将两个整数的大小添加到指针,因此a [0]处的值(如果被解释为int*而不是int **)会跳过2.

要获得结果,您希望将其声明为数组int *.

int *a[2];
Run Code Online (Sandbox Code Playgroud)

  • 我很高兴我不是唯一能够做到这一点的人.这里的"答案"和评论是盲人领导盲人的最糟糕案例之一. (2认同)