C语言里:为什么不能将int型变量直接赋值给指向int型变量的指针
答案:5 悬赏:20
解决时间 2021-01-26 13:01
- 提问者网友:回忆在搜索
- 2021-01-25 14:33
C语言里:为什么不能将int型变量直接赋值给指向int型变量的指针
最佳答案
- 二级知识专家网友:荒野風
- 2021-01-25 15:33
因为指针里实际保存的是地址
比如
int a = 0;
int *p ;
p = &a; //这是指向int型变量的指针,它保存的a这个变量所在的地址,比如,a保存在内存地址为0x00010011,那么p保存的就是0x00010011
所以不能直接把int型变量赋值给指针
比如
int a = 0;
int *p ;
p = &a; //这是指向int型变量的指针,它保存的a这个变量所在的地址,比如,a保存在内存地址为0x00010011,那么p保存的就是0x00010011
所以不能直接把int型变量赋值给指针
全部回答
- 1楼网友:由着我着迷
- 2021-01-25 19:51
指针就是地址,只要形式上是地址,指针变量就可接受。但int型变量的值不是地址,如a是int类型,那么(*int)a就是指针类型了。
- 2楼网友:刀戟声无边
- 2021-01-25 18:15
指针 是一种地址空间变量是一种值严格上讲是可以赋值的,但是由于编译器的警告作用不让你赋值,你硬要是想赋值的话就这样 int = (int *) int;明白吗?
- 3楼网友:污到你湿
- 2021-01-25 17:51
可以!但有条件
指针只能操作地址,也就是说将地址值作为变量赋给指针
如果你的变量存放着某一内存的合法首地址,可以用类型强制转换进行赋值,如果没有存放地址,即使强制类型转换进行赋值,也没有任何意义,因为合法首地址意味着系统分配了一块合法的内存,你才能用指针操作
指针只能操作地址,也就是说将地址值作为变量赋给指针
如果你的变量存放着某一内存的合法首地址,可以用类型强制转换进行赋值,如果没有存放地址,即使强制类型转换进行赋值,也没有任何意义,因为合法首地址意味着系统分配了一块合法的内存,你才能用指针操作
- 4楼网友:轻熟杀无赦
- 2021-01-25 17:04
int a ;
int *p;
p=a; 不行 只能将地址给p
p= &a; p指向a
p = (int *)a ;把a强制转换成地址给p
int *p;
p=a; 不行 只能将地址给p
p= &a; p指向a
p = (int *)a ;把a强制转换成地址给p
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |