| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 575 人关注过本帖
标题:这个指针错误在哪里
只看楼主 加入收藏
q934623325
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-2-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
这个指针错误在哪里
#include<stdio.h>
      2 #include<stdlib.h>
      3 void f (int *p)
      4 {
      5   p=malloc(siziof(int));
      6   *p=12;
      7 }
      8 int main ()
      9 {
     10    int *p;
     11    f(p);
     12    printf("%d\n",*P);
     13    return 0 ;
     14 }
搜索更多相关主题的帖子: include return 
2015-05-24 18:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
你自己觉得呢?不看书写代码就是这样的了。

授人以渔,不授人以鱼。
2015-05-24 19:39
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:4 
p=(int*)malloc(sizeof(int));
printf("%d\n",*P);小写
free(p);

一片落叶掉进了回忆的流年。
2015-05-24 19:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 3楼 诸葛欧阳
你运行过自己的程序吗?

授人以渔,不授人以鱼。
2015-05-24 19:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用q934623325在2015-5-24 18:52:44的发言:

#include<stdio.h>
      2 #include<stdlib.h>
      3 void f (int *p)
      4 {
      5   p=malloc(siziof(int));
      6   *p=12;
      7 }
      8 int main ()
      9 {
     10    int *p;
     11    f(p);
     12    printf("%d\n",*P);
     13    return 0 ;
     14 }


你的程序为什么错?你只需要自问自答这个问题即可:函数f()中的p跟main()中的p是同一个实体吗?如果实在还不明白,就把指针的声明int*改掉,返回原始的int形式看看,自己一定遇到过并解答过的。

记住:指针的类型int*,其实是一个typedef,无非就是PINT这样的一个自定义类型,所以它的用法跟PINT p是一样,亦即与int p是一样的。指针只是一个普通的变量而已。

授人以渔,不授人以鱼。
2015-05-24 20:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我也不知道你用什么编译器,像1楼这样的代码,编译时就会出警告,指出指针p未初始化就使用,从而编译失败(把警告开关设为错误),那是在编译时就已经可以发现的错误。

授人以渔,不授人以鱼。
2015-05-24 20:35
bilal
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2015-5-27
收藏
得分:4 
一般的编辑器,运行一下就可以知道错在哪里的!
2015-05-27 16:27
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:4 
楼主运行这个就知道为什么了
程序代码:
#include<stdio.h>
#include<stdlib.h>

void f (int *p)
{
    printf("f    p = %d\n", p);
    p = (int*)malloc(sizeof(int));
    *p=12;
    printf("f    p = %d\n", p);
}
int main ()
{
   int *p;
   printf("main p = %d\n", p);
   f(p);
   printf("main p = %d\n", p);
   return 0 ;
}

2015-05-27 17:03
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:4 
楼主会不会已经忘记在某个论坛发过某个贴了

人有多懒,编程就有多难。
2015-05-27 17:12
z974532452
Rank: 2
等 级:论坛游民
帖 子:23
专家分:41
注 册:2015-5-10
收藏
得分:4 
不能直接把整数付给指针变量
2015-05-27 22:56
快速回复:这个指针错误在哪里
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018554 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved