C (对我来说)指针的奇怪行为

C (对我来说)指针的奇怪行为,c,C,我在读指针,但我对指针的性质感到困惑。这就是我的意思 int x = 4; //Here I declare p as integer pointer int *p; // Here I assign memory address of x to pointer p p = &x; // The line below prints result 4 which is expected. If I miss asterisk before p I'll get memory addr

我在读指针,但我对指针的性质感到困惑。这就是我的意思

int x = 4;

//Here I declare p as integer pointer
int *p;

// Here I assign memory address of x to pointer p
p = &x;

// The line below prints result 4 which is expected. If I miss asterisk before p I'll get memory address instead of data which that memory address holds.
printf("%d", *p)
当星号在指针“指向”内存地址之前出错时进行汇总。若指针前面有星号,则它“指向”实际数据。 到目前为止还不错

但为什么这段代码能正常工作呢

int someIntVariable = 10;

const int *p = &someIntVariable;
printf("%d", *p);

如果我漏掉星号,编译器会给我一个警告“警告:初始化从指针生成整数而不进行强制转换”

我希望p(如果编译器允许我使用不带星号的p)保存someIntVariable的内存地址,而不是它的“值”

这里发生了什么?

在声明中:

const int *p = &someIntVariable;
星号不是解引用运算符。它只是说明
p
是一个指针。这条线的效果与

const int *p;
p = &someIntVariable;
在宣言中:

const int *p = &someIntVariable;
星号不是解引用运算符。它只是说明
p
是一个指针。这条线的效果与

const int *p;
p = &someIntVariable;

在这里,您只需一步就可以声明一个指针并为指针赋值。 它相当于以下代码:

const int *p;
p = &someIntVariable;

此处,*不用作反引用运算符。它在指针声明的上下文中使用。

这里,您在一个步骤中声明一个指针并为指针赋值。 它相当于以下代码:

const int *p;
p = &someIntVariable;

此处,*不用作反引用运算符。它用于指针声明的上下文。

常量int*是一种数据类型,即指向
常量int
的指针
p
是变量的名称。它在左手边


当asterik位于RHS时,它具有不同的含义。它意味着取消引用。

常量int*是一种数据类型,即指向
常量int
的指针
p
是变量的名称。它在左手边


当asterik位于RHS时,它具有不同的含义。这意味着取消引用。

我相信您得到了警告:初始化从指针生成整数而不进行强制转换, 当你试着这样做的时候

int someIntVariable = 10;  
const int p = &someIntVariable;
printf("%d", p); 
你试图做的是,你给一个普通变量分配一个地址,并期望它工作,但这不是普通变量使用的方式这就是为什么指针开始起作用来做这项工作,你试图用普通变量替换指针


我仍然没有找到它的真正答案,只是看看我问的这些问题

我相信你得到了警告:初始化从指针生成整数而不进行强制转换, 当你试着这样做的时候

int someIntVariable = 10;  
const int p = &someIntVariable;
printf("%d", p); 
你试图做的是,你给一个普通变量分配一个地址,并期望它工作,但这不是普通变量使用的方式这就是为什么指针开始起作用来做这项工作,你试图用普通变量替换指针


我仍然没有找到真正的答案,只是检查一下我问的这些问题

如果我漏掉了星号,编译器会给我一个警告“警告:初始化从指针生成整数而不进行强制转换”什么意思您在const int*p语句或printf语句中漏掉了星号?如果我漏掉了星号,编译器会给我一个警告“警告:初始化从指针生成整数而不进行强制转换”,这意味着您在const int*p语句或printf语句中漏掉了星号是什么意思?