今天,我有一个关于考试用C ponters,并有大约两倍指针的一些问题,其中使用奇怪的指针初始化
*pointer = &variable;
以下语法,我不知道我是否已经正确,但可有人解释指针指向哪里以及变量中的值将如何改变?起初我认为它会导致sntax错误,但在测试中没有这样的答案。由于事先
今天,我有一个关于考试用C ponters,并有大约两倍指针的一些问题,其中使用奇怪的指针初始化
*pointer = &variable;
以下语法,我不知道我是否已经正确,但可有人解释指针指向哪里以及变量中的值将如何改变?起初我认为它会导致sntax错误,但在测试中没有这样的答案。由于事先
如果指针被初始化这种方式:
int *pointer;
int variable = 10;
pointer = malloc(sizeof(int));
*pointer = &variable;
*pointer = &variable
意味着变量的地址被设置为指针对象的值。由于*pointer
正在取消引用,所以您基本上存储的值不会设置引用。
所以后来例如,如果变量的地址类似于(0x100),则该值将被存储,并且指针将指向它。我理解正确吗? –
这就是如果指针在赋值之前正确初始化。 – dpp
嗯,我想我现在明白了,谢谢:) –
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);
谢谢。我做了正确的选择,而做测试:) –
// 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;
嗯,现在它对我有意义:)谢谢 –
被它也是在同一行中声明? –
@ MahmoudAl-Qudsi我对此表示怀疑。 – dpp
@dpp这将使它成为一个简单的指针,而不是两个间接级别。对初学者更有意义。 –