1

今天考了C语言的ponters,有一些关于双指针的问题,使用了下面的语法

*pointer = &variable;

我不知道我是否做得正确,但有人可以解释指针指向哪里以及变量中的值将如何变化?一开始我以为会导致sntax错误,但在测试中没有这样的答案。提前致谢

4

4 回答 4

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;
于 2012-05-03T06:45:19.027 回答
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);
于 2012-05-03T06:43:45.943 回答
0

这是一个关于如何使用它的示例:

int foo = 123;
int **bar = malloc(sizeof(int *));
*bar = &foo;

Nowbar是一个指向 foo 的指针。不过也没多大意义。

于 2012-05-03T06:41:44.253 回答
0

如果指针以这种方式初始化:

int *pointer;
int variable = 10;

pointer = malloc(sizeof(int));
*pointer = &variable;

*pointer = &variable表示变量的地址被设置为指针的值。由于*pointer是取消引用,因此您基本上是在存储一个值而不是设置引用。

于 2012-05-03T06:38:56.557 回答