| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 494 人关注过本帖
标题:为什么会运行报错
只看楼主 加入收藏
线一根
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2011-12-9
结帖率:100%
收藏
 问题点数:0 回复次数:6 
为什么会运行报错
#include <stdio.h>
void main()
{
    int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
    int *p=a+5,*q=NULL;
    *q=*(p+5);
    printf("%d%d\n",*p,*q);
}
此程序为什么运行后回报错~哪位大侠帮帮忙
搜索更多相关主题的帖子: include 
2011-12-10 00:05
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 楼主 线一根
q是空指针

总有那身价贱的人给作业贴回复完整的代码
2011-12-10 00:11
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:0 
“*q=NULL”是什么?

最基础的往往是你最容易忽略的!
2011-12-10 00:13
线一根
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2011-12-9
收藏
得分:0 
回复 2楼 embed_xuel
还是不是很明白呀?  是*q=NULL 的话,q就是空指针(常量)不能再被赋值,还是空指针不指向任何东西~
2011-12-10 00:32
wweilys
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-12-7
收藏
得分:0 
q是空指针,没有指向的地址,如果你要给他赋值,请先给他分配一片空间
2011-12-10 10:44
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
收藏
得分:0 
#include <stdio.h>
void main()
{
    int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
    int *p=a+5,*q;
    *q=*(p+5);
    printf("%d%d\n",*p,*q);
}
2011-12-10 13:08
共和国鹰派
Rank: 3Rank: 3
来 自:山东
等 级:论坛游侠
帖 子:37
专家分:119
注 册:2011-10-20
收藏
得分:0 
这里的话,应为你的q你给它初始化为NULL那么*q是对空指针的解引用,这是错误的,所以会出错,当然给一个指针初始化NULL是好的编程习惯,所以你可以将*q=*(p+5)改为q=p+5;这样就完全没有问题了
2011-12-10 18:02
快速回复:为什么会运行报错
数据加载中...
 
   



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

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