C⼀C 中的指针问题:int i;int *pa=&i;

2025-12-05 15:20:08
推荐回答(1个)
回答1:

int
i;
int
*pa=&i;
因为i的类型是int,所以他的地址只占用了4个字节,如果用4个字节存放float会发生数据丢失,int类型的指针必须指向int类型的变量,指针记录的是变量在内存中的开始地址,比如i的地址是0x0001,那用*pa定位变量i的时候只会从0x0001开始取4个字节,如果存放的是float,也会发生数据丢失。
还是C的概念模糊
指针的意思就是变量在内存中存放的地址,变量只是一个别名,只有存放的数据才有意义,&i找到的是变量存放的地址,而不是包含的数据。
int
*p=i
错在给指针赋值必须是地址,i只是一个变量,用&取出来的才是地址
int
p=&i
错在指针的定义,语法规定的指针必须加*号,没有*号的p只是一个变量,而&是不能给变量赋值的