c语言指针问题,有一些疑惑。 比如已经定义了以下, int a; int *q=NULL; a=

2025-02-06 01:02:55
推荐回答(2个)
回答1:

1 是错误的,不能将 int 赋值给 int *
2 是正确的,因为 &a 的类型为 int *,正是 q 的类型;
3 理论上正确,实际中不妥,因为 q 指向受保护内存区,此时对 q 解引用并赋值,程序会崩掉;
4 是错误的,道理和 3 同理;

回答2:

1.q = a; // 类型不同,会给出编译警告
2.q = &a;// 指针p指向a的存储地址,正常用法
3.*q = a;// 有问题,a的值放哪儿呢?
4.*q = &a;// 有问题,a的地址放哪儿呢?