我是C编程语言的初学者。我在书上看到了一段代码:
#include<stdio.h>
int main(){
int * * k, *a, b=100;
a = &b;
k = &a;
printf("%d\n",* * k);
}
我不知道 int * *k
是什么意思。它是一个整数指针还是值?它将指向什么?它包含/存储什么?这个变量有什么用?我怎样理解这个表达式?
我是C编程语言的初学者。我在书上看到了一段代码:
#include<stdio.h>
int main(){
int * * k, *a, b=100;
a = &b;
k = &a;
printf("%d\n",* * k);
}
我不知道 int * *k
是什么意思。它是一个整数指针还是值?它将指向什么?它包含/存储什么?这个变量有什么用?我怎样理解这个表达式?
int** k
是指向 int 指针的指针。
它存储了一个内存地址,在这个内存地址中又存储着另一个内存地址,而在这个内存地址中存储了一些整数值。
这被称为双指针。它可以用来存储单指针的地址。
您还可以创建三级指针来存储双指针的地址。
示例:int ***k;
*(*k) = *(a) = *(address of b) = value of b
*k
意思是一些代码稍后将从地址k获取一个值。
*(*k)
这意味着一些代码稍后将从地址(*k)获取一个值。
int **k
意思是k
用于整数地址解引用,但带有第二级。在变量名后面加上这个*
字符就可以将其定义为指针。因此,k是指向整数的指针的指针。
要获取指针所指向的单元格的值,
*k
它的使用方式与定义中一样。当它是一个二级指针时,
**k
被用来获取它指向的值。