鱼C论坛

 找回密码
 立即注册
查看: 4011|回复: 6

有关C指针的问题

[复制链接]
发表于 2012-8-23 20:17:33 | 显示全部楼层 |阅读模式
2鱼币
#include<stdio.h>
int main()
{
int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
printf("a=%d\n",a);
return 0;
}
a=0 不明白,求解释!!

最佳答案

查看完整内容

a 的类型是 int p1 是 int * 类型, 存放的是 变量 k 的地址 &m 是 变量 m 的地址 a=p1==&m 相当于 a = (p1==&m) 也就是, 先比较p1是否等于&m, 很明显是不相等的 所以 p1==&m 的结果 是 0 , 然后赋值给 a 最后 a 就等于 0 了

点评

兄弟 下次发代码的时候 在编辑框 上面不是有个 <> 这个吗 这个是专门发代码的 你点进去 把代码 复制进去就可以了 这样就有利于别人帮你调试 修改  发表于 2012-8-23 21:21
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-23 20:17:34 | 显示全部楼层
a 的类型是 int
p1 是 int * 类型, 存放的是 变量 k 的地址
&m 是 变量 m 的地址

a=p1==&m   相当于 a = (p1==&m)
也就是, 先比较p1是否等于&m, 很明显是不相等的
所以 p1==&m 的结果 是 0 , 然后赋值给 a
最后 a 就等于 0 了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-23 21:25:16 | 显示全部楼层
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         int a,k=4,m=6,*p1=&k,*p2=&m;
  5.         a=p1==&m;                //根据 优先级 等于运算符 大于 赋值 运算符 所以这个表达式 也可以写成 a=(p1==&m)  
  6.                                         你先看括号里面的表达式 因为p1 的值是 &k  所以p1!=&m 所以表达式为假 括弧的结果为0 然后在把0赋值给a  所以a=0咯
  7.         printf("a=%d\n",a);
  8.         return 0;
  9. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-23 21:26:36 | 显示全部楼层
C语言中, 没有 波尔类型 ( bool ), 所以判断运算的结果 不是 true 或者 false, 而是
如果为真, 则用 非0 表示(任何非零的数都表示真)
如果为假, 则用 0 表示
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-23 21:32:48 | 显示全部楼层
代码还是写清晰点吧 写的太乱了!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-24 19:59:02 | 显示全部楼层
先判断等号,不相等返回值为0,然后赋值给a,a结果为0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-24 20:45:38 | 显示全部楼层
==是逻辑运算符返回1或0,是真就返回1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 19:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表