指向符号常量的指针问题
学习指针过程碰到的问题,有路过的,请指点一下!代码如下:
#include <stdio.h>
int main(void)
{
const int i = 40;
int *p;
p = (int*)&i;
printf(" i = %d\n",i);
*p=520;
printf("*P = 520重新赋值后。i = %d",i);
printf("\n*p = %d",*p);
printf("\n&i = %p\n p = %p ",&i,p);
return(0);
}
问题:符号常量地址不能直接赋值给int*指针,通过(int*)强制转换。发现对*p重新赋值可以通过编译,但是测试结果发现,通过i取值和*p取值不同,但是&i和指针p指向的是同一个地址,这是为什么,一个地址怎么能取出两个不同的值。
取值是相同的,再检查检查 本帖最后由 jhq999 于 2022-6-19 08:44 编辑
编译时,常数直接换成立即数了,和常数i所在的地址没有什么关系了,即
printf("*P = 520重新赋值后。i = %d",40); jhq999 发表于 2022-6-19 08:43
编译时,常数直接换成立即数了,和常数i所在的地址没有什么关系了,即
感谢解答,明白了,谢谢!
页:
[1]