99网
您的当前位置:首页指针使用的常见错误

指针使用的常见错误

来源:99网

在编译环境为sublime text3 c语言编译环境下
windows 7


1 引用未初始化的指针变量

#include <stdio.h>
int main () {
    char *a ,*b;   
    printf("a = %#X\n", a);  //显示地址信息 %P也行
    printf("b = %#X\n", b);
    scanf(" %s",a);
    scanf(" %s",b);
    printf("*a = %s\n",a);
    printf("*b = %s\n",b);

    return 0;
}


#include <stdio.h>
char arr[100];
int main () {
    char *a ;
    a = arr;  //给与其一个合理的地址赋值
    scanf(" %s\n",a);
    printf("*a = %s\n",a);
    return 0;
}

2 往一个存放NULL地址的指针变量里面写入数据

# include <stdio.h>
int main(void)
{
    char *i = NULL;
    printf("%#X\n",i);
    scanf("%s\n", i);
    printf("%s\n",i);
    return 0;
}

既然不能往里面写数据,而且还容易犯错,为什么还要这样给它初始化呢?直接同前面定义普通变量时一样,在定义时也不初始化,等到后面知道该给它赋什么值时再给它赋值不行吗?可以!但还是建议大家将它初始化为 NULL,就同前面将普通变量在定义时初始化为 0 一样。这是很好的一种编程习惯

最后关于 NULL 再补充一点,NULL 是定义在 stdio.h 头文件中的符号常量,它表示的值是 0。
同样会造成段错误,在执行过程中发生错误

因篇幅问题不能全部显示,请点此查看更多更全内容