标题:指针的输出
只看楼主
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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445792-1-1.html




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

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