我是C编程语言的初学者。我在书上看到了一个代码:
#include<stdio.h>
int main(){
int * * k, *a, b=100;
a = &b;
k = &a;
printf("%d\n",* * k);
}
我不知道int * *k
的含义。这是整数指针还是值?它会指向什么?它包含什么/存储?这个变量的用途是什么?我怎么能理解这个表达?
答案 0 :(得分:8)
int **k
k
是指向int(双指针)指针的指针,并保存一些其他指针变量的地址。
在你的例子中:
int b = 100; /* 'b' is an int, initialized to value 100 */
int *a = &b; /* a is a pointer-to-int*/
int **k = &a; /* k is a pointer-to-pointer-to-int */
见下图以便更好地理解:
答案 1 :(得分:2)
int** k
是指向int指针的指针。
它存储一个存储器地址,在该存储器地址中存储另一个存储某个整数值的存储器地址。
答案 2 :(得分:1)
它被称为双指针。它可以用来存储单指针的地址。
您还可以创建三重指针来存储来自双指针的地址。
示例:int ***k;
答案 3 :(得分:1)
这称为指针指针。
这里,** k的输出是100,b的值。
*(*k) = *(a) = *(address of b) = value of b
答案 4 :(得分:1)
*k
表示某些代码稍后会从地址k获取一个值。
*(*k)
表示某些代码稍后会从地址(* k)中获取值。
int **k
表示k
用于整数使用的地址解除引用,但具有第二级。将*
字符放在其定义的变量名后面,使其成为指针。所以k是指向整数的指针。
获取指针指向的单元格的值,
*k
就像在定义中一样使用。然后当它是二阶指针时
**k
用于获取其指向值。