奇怪的指针初始化

时间:2012-05-03 06:35:26

标签: c pointers

今天我在C中考虑了ponters,并且有一些关于双指针的问题,其中使用了以下语法

*pointer = &variable;

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

4 个答案:

答案 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);