今天我在C中考虑了ponters,并且有一些关于双指针的问题,其中使用了以下语法
*pointer = &variable;
我不知道我是否做得正确,但有人可以解释指针指向哪里以及变量中的值将如何变化?起初我以为它会导致sntax错误,但在测试中没有这样的答案。提前致谢
答案 0 :(得分:1)
// 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;
答案 1 :(得分:0)
如果指针以这种方式初始化:
int *pointer;
int variable = 10;
pointer = malloc(sizeof(int));
*pointer = &variable;
*pointer = &variable
表示变量的地址被设置为指针对象的值。由于*pointer
正在取消引用,因此您基本上存储的值不是设置引用。
答案 2 :(得分:0)
以下是如何使用它的示例:
int foo = 123;
int **bar = malloc(sizeof(int *));
*bar = &foo;
现在bar
是指向foo指针的指针。虽然没有多大意义。
答案 3 :(得分:0)
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);