一个字符串输入的错误

来源:互联网 发布:自控力 知乎 编辑:程序博客网 时间:2024/05/17 23:48
代码1:#include <stdio.h>int main(void){    char a[1] = {0};    scanf("%s",a);    puts(a);    return 0;}代码2:#include <stdio.h>int main(void){    char* a = NULL;    scanf("%s",a);    puts(a);    return 0;}代码3:#include <stdio.h>int main(void){    char* a = 0x12ff80;    scanf("%s",a);    puts(a);    return 0;}


char a[1] = {0};这样没出错是因为,数组a后面有部分空闲的内存,没用到,这个与编译器有关,一般是为了内存字节对齐,把输入字符串长点,一旦覆盖了后面的程序代码,就会出错。char* a = NULL;把a赋值null,a指向了系统内存地址,这个内存程序不能write,马上出错。

C保证 正确的代码一定可以得到正确的结果,于是 错误的代码不一定会出现"错误"的结果。

原创粉丝点击