seglex 发表于 2019-9-14 20:01:39

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:39

@小甲鱼 请求删帖

seglex 发表于 2019-9-14 20:03:27

zltzlt 发表于 2019-9-14 20:02
@小甲鱼 请求删帖

为啥删我的贴?给个理由

zltzlt 发表于 2019-9-14 20:03:41

seglex 发表于 2019-9-14 20:03
为啥删我的贴?给个理由

重复发帖

seglex 发表于 2019-9-14 20:04:52

zltzlt 发表于 2019-9-14 20:03
重复发帖

我去那边综合交流区删除那个贴不就可以了,之前发错地方了

zltzlt 发表于 2019-9-14 20:05:27

seglex 发表于 2019-9-14 20:04
我去那边综合交流区删除那个贴不就可以了,之前发错地方了

发错地方不要紧

seglex 发表于 2019-9-14 20:07:44

zltzlt 发表于 2019-9-14 20:05
发错地方不要紧

好多年没来,不知道规矩,你帮我删除综合讨论区的帖子吧!

zltzlt 发表于 2019-9-14 20:08:19

seglex 发表于 2019-9-14 20:07
好多年没来,不知道规矩,你帮我删除综合讨论区的帖子吧!

我不是那一版的版主,删不了

seglex 发表于 2019-9-14 20:08:54

zltzlt 发表于 2019-9-14 20:08
我不是那一版的版主,删不了

我自己可以删除不?

zltzlt 发表于 2019-9-14 20:09:20

seglex 发表于 2019-9-14 20:08
我自己可以删除不?

手机版不能删除

yuesezhenmei 发表于 2019-9-14 20:41:04


# 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;
}

seglex 发表于 2019-9-14 20:54:04

yuesezhenmei 发表于 2019-9-14 20:41
# include
# include
int main(void)


&*p和&p区别在哪儿,大神能指点吗?

seglex 发表于 2019-9-14 20:57:38

&p是指向p变量吗而非动态内存吧?&*p是指向动态内存的吗?

yuesezhenmei 发表于 2019-9-14 20:58:26

seglex 发表于 2019-9-14 20:54
&*p和&p区别在哪儿,大神能指点吗?

你在一开始 定义int *p 这时他是指针但到你用的时候 你只写p的话 他只是地址 ,你要*p他才是指向这个地址的值

bin554385863 发表于 2019-9-14 21:02:53

本帖最后由 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()配对使用的,以防止内存泄漏.

seglex 发表于 2019-9-14 21:05:14

非常感谢大神
页: [1]
查看完整版本: C语言问题,请教一下大神!