今天考了C语言的ponters,有一些关于双指针的问题,使用了下面的语法
*pointer = &variable;
我不知道我是否做得正确,但有人可以解释指针指向哪里以及变量中的值将如何变化?一开始我以为会导致sntax错误,但在测试中没有这样的答案。提前致谢
// two int variables.
int var1;
int var2;
// int pointer pointing to var1
int *ptr = &var1;
// pointer to int pointer..pointing to ptr
int **ptr_to_ptr = &ptr;
// now lets make the pointer pointed to by ptr_to_ptr
// point to var2
*ptr_to_ptr = &var2;
// or alternatively you can do:
// ptr = &var2;
pointer
是指向指针的指针。例如,
int var1=42;
int* intptr;
int** ptr2intPtr;
ptr2intptr = &intptr;
//Syntax in question.
*ptr2intptr = &var1;
//Just like *intptr is same as var1, *ptr2intptr is same as intptr
//so the above line will be equivalent to intptr = &var1
//All the three are the same
printf("%d",**ptr2intptr);
printf("%d",*intptr);
printf("%d",var1);
这是一个关于如何使用它的示例:
int foo = 123;
int **bar = malloc(sizeof(int *));
*bar = &foo;
Nowbar
是一个指向 foo 的指针。不过也没多大意义。
如果指针以这种方式初始化:
int *pointer;
int variable = 10;
pointer = malloc(sizeof(int));
*pointer = &variable;
*pointer = &variable
表示变量的地址被设置为指针的值。由于*pointer
是取消引用,因此您基本上是在存储一个值而不是设置引用。