的问题 问什么出现空指针的问题,求大神

 我来答
qzhao_1
2019-01-07 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2.4万
采纳率:76%
帮助的人:4392万
展开全部
关于 C 语言的所有使用中,最难于理解的、但是同时又是最具有最大灵活性、以及最大魅力的恐怕就属于 C 语言中的指针内容了!!
之所以会出现空指针的问题,是因为你虽然定义了一个指针变量,但是你并没有将该指针变量指向一个实实在在的内存地址,那么此时此刻你一旦使用了该指针变量,就必然会造成程序崩溃!!!
举例说明如下(一个完整的 C 语言源程序):

#include <stdlib.h> /* malloc( ) 函数、free( ) 函数原型都在此头文件中有说明 */
void main( )
{
char * p ; /* 定义一个字符指针变量 p */

/* gets(p) ; 特别注意:这里的 gets(p)、以及 puts(p) 就是绝对错误的!!因为虽然说在前面已经定义了字符指针变量 p,但是由于并没有对字符指针变量 p 进行初始化,就使用该指针变量,故一旦运行该程序,该程序肯定就会立马崩溃的!!!! 正确的代码见从 malloc 开始的部分。

puts(p) ; */
p = (char *)malloc(1000)*sizeof(char) ; /* 为 p 动态分配内存,其大小为 1000 个字节 */

if( p == NULL ) /* 如果内存分配失败,则打印出错信息,并退出应用程序 */

{

printf("Can't allocation memory !\n") ;

exit(1) ; /* 退出应用程序 */

}

gets(p) ; /* 若动态分配内存成功,则从键盘上输入一串字符,最多为 1000 个 */

puts(p) ; /* 在屏幕上显示刚刚从键盘上输入的字符串 */

free(p) ; /* 释放内存 */

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式