| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 518 人关注过本帖
标题:指针的输出
只看楼主 加入收藏
Easom
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-5-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
指针的输出
#include <stdio.h>
int main()
{
    int *p;
    int *q;
    *p=6;
    *q=8;
    printf("%d\t",*p);
    printf("%d",*q);
    return 0;
}

为什么我这样编译,编译器没提示错误,可是一旦运行,就运行不了?[local]1[/local]


之后想,这难道也要分配内存?

#include <stdio.h>
#include <stdlib.h>
int main()
{

    int *p;
    int *q;
    p=(int *)malloc(sizeof(int));
    p=(int *)malloc(sizeof(int));
    *p=6;
    *q=8;
   
    printf("%d\t",*p);
    printf("%d",*q);
    free(p);
    free(q);
    return 0;
}
还是一样
[local]2[/local]

[ 本帖最后由 Easom 于 2015-5-26 14:44 编辑 ]
搜索更多相关主题的帖子: include return 编译器 
2015-05-26 14:43
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
很明显  第二种是正确的  你的错在了马大哈   2个p 没q

DO IT YOURSELF !
2015-05-26 14:46
Easom
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-5-26
收藏
得分:0 
回复 2楼 wp231957
额。。。对耶


那再问下,为什么输出一个时,不用分配,输出两个却用呢?
2015-05-26 14:57
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
你的意思是这样 吗

#include <stdio.h>
#include <stdlib.h>
int main()
{

    int *p;
      
    *p=6;
      
    printf("%d\t",*p);
  
   
    return 0;
}

这样也是不可以的哦

DO IT YOURSELF !
2015-05-26 15:00
Easom
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-5-26
收藏
得分:0 
回复 4楼 wp231957
恩,可这样我编译得出,能输出6
2015-05-26 15:03
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:7 
int *p;只是单纯声明了指针,并没有分配地址
2015-05-26 15:04
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:7 
请问楼主,下面的代码
 int a=10;
 int *p=&a;
 *p=6;    //这里p指向哪里?

代码改一下:  
 int *p=&a;
 *p=6;    //这里p又指向哪里?

总有那身价贱的人给作业贴回复完整的代码
2015-05-26 15:15
Easom
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-5-26
收藏
得分:0 
回复 7楼 embed_xuel
第一个 p和a的地址一样,就p指向a的地址,而当*p=6,只是改变地址中的内容,之后最后输出都为6  (叙述应该没问题吧。。)


第二个 a不是还没定义么。。


想知道为什么一个时可以输出?我知道两个时不能,因为他们是“野生的”,但一个是,不是也是“野生的”吗?


谢谢
2015-05-26 15:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这个有啥纠结的  一个也不行 两个也不行 三个也不行。。。。。。。。。。

至于你为啥能输出6  估计是你的编译器替你优化了吧   纠结这无意义的事情 还不如打会游戏呢

DO IT YOURSELF !
2015-05-26 15:26
Easom
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-5-26
收藏
得分:0 
回复 9楼 wp231957
好吧。。智能的编译器
2015-05-26 15:29
快速回复:指针的输出
数据加载中...
 
   



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

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