C语言问题,请教一下大神!
# include <stdio.h># include <malloc.h>
int main(void)
{
int i=1;
int j;
int *p;
p=(int*)malloc(i*sizeof(int));
printf("输入&p的值");
scanf("%d",&p);
j=*p;
printf("*p的值%d\n",j);
}
这段代码中如果直接输出为
printf("%d",p);的话就可以输出p的值,
*p不是对变量p所指向的内存操作吗?为什么会出错 @小甲鱼 请求删帖 zltzlt 发表于 2019-9-14 20:02
@小甲鱼 请求删帖
为啥删我的贴?给个理由 seglex 发表于 2019-9-14 20:03
为啥删我的贴?给个理由
重复发帖 zltzlt 发表于 2019-9-14 20:03
重复发帖
我去那边综合交流区删除那个贴不就可以了,之前发错地方了 seglex 发表于 2019-9-14 20:04
我去那边综合交流区删除那个贴不就可以了,之前发错地方了
发错地方不要紧 zltzlt 发表于 2019-9-14 20:05
发错地方不要紧
好多年没来,不知道规矩,你帮我删除综合讨论区的帖子吧! seglex 发表于 2019-9-14 20:07
好多年没来,不知道规矩,你帮我删除综合讨论区的帖子吧!
我不是那一版的版主,删不了 zltzlt 发表于 2019-9-14 20:08
我不是那一版的版主,删不了
我自己可以删除不? seglex 发表于 2019-9-14 20:08
我自己可以删除不?
手机版不能删除
# include <stdio.h>
# include <malloc.h>
int main(void)
{
int i=1;
int j;
int *p;
p=(int*)malloc(sizeof(int));
printf("输入&p的值");
scanf("%d",&*p);
j=*p;
printf("*p的值%d\n",j);
return 0;
} yuesezhenmei 发表于 2019-9-14 20:41
# include
# include
int main(void)
&*p和&p区别在哪儿,大神能指点吗? &p是指向p变量吗而非动态内存吧?&*p是指向动态内存的吗? seglex 发表于 2019-9-14 20:54
&*p和&p区别在哪儿,大神能指点吗?
你在一开始 定义int *p 这时他是指针但到你用的时候 你只写p的话 他只是地址 ,你要*p他才是指向这个地址的值 本帖最后由 bin554385863 于 2019-9-14 21:08 编辑
# include <stdio.h>
# include <malloc.h>
int main(void)
{
int i=1;
int j;
int *p;
p=(int*)malloc(i*sizeof(int));
printf("输入&p的值");
scanf("%d",&p);//删掉&
j=*p;
printf("*p的值%d\n",j);
}
scanf("格式符...", 普通变量地址...)
你这里p本身就已经是地址了,不能在用&运算符了.
运算符&的作用是取变量的地址.
&p就是取指针p的的地址,scanf("%d",&p)你这是在修改一个指针的值而不是修改指针指向地址的值.
另外malloc()一般是和free()配对使用的,以防止内存泄漏.
非常感谢大神
页:
[1]