永发信息网

c 语言中这个指针赋初值的问题

答案:3  悬赏:10  手机版
解决时间 2021-03-19 18:51
  • 提问者网友:萌卜娃娃
  • 2021-03-19 07:56
main( )
{ int i=10;
int *p;
*p=i;
printf(“%d”,*p);
}
上面程序为什么没有赋初值,*p=i,不是赋初值么?那它是什么意思呢?
最佳答案
  • 五星知识达人网友:大漠
  • 2021-03-19 09:02
#include "stdio.h"
void main( )
{
int i=10;
int *p;
p=&i;
printf("%d",*p);
}

应该是这样,将i的地址给p,相当于这样的程序
#include "stdio.h"
void main( )
{
int i=10;
int *p=&i;

printf("%d",*p);
}

指针指向i的内存单元。而不是将*p单独拿来用,这个相当于指存所指内存单元的值,而不是地址,所以,我们应将i的地址即&i给p.
全部回答
  • 1楼网友:话散在刀尖上
  • 2021-03-19 11:26
a=p1==&m; 因为逻辑运算符等号 == 的优先级比赋值运算符 = 高,所以这个表达式其实就是 a=(p1==&m); c语言里面非零为真,0为假,因为 p1==&m 表达式为假,所以 a 的值为0。。 c语言里面,对于 a/b,如果 a 和 b 都是 int 类型的话,那么 a/b 表示的是整除,所以在这里 -4/6 = 0。。 所以 b 的值为 7。。
  • 2楼网友:摆渡翁
  • 2021-03-19 10:26
int *p;这句话只定义了p,没有初始化,它指向的是一个未知地址. *p=i;中*p是指p指向的值,p指向的是未知地址所以是不合法的 对p的赋值应该是 p=&i; 或者 p=malloc(sizeof(int)); *p=i;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯