main( )
{ int i=10;
int *p;
*p=i;
printf(“%d”,*p);
}
上面程序为什么没有赋初值,*p=i,不是赋初值么?那它是什么意思呢?
c 语言中这个指针赋初值的问题
答案:3 悬赏:10 手机版
解决时间 2021-03-19 18:51
- 提问者网友:萌卜娃娃
- 2021-03-19 07:56
最佳答案
- 五星知识达人网友:大漠
- 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.
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;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯