使char指针指向null会导致分段错误

The*_*eer 1 c linux segmentation-fault

在linux中,我正在尝试以下代码导致分段错误错误:

int main(int arg_count,char *args[]){  
    char *buffer;
    if(arg_count>1)
      buffer = args[1];
    else 
      *buffer = 0;
 }
Run Code Online (Sandbox Code Playgroud)

我知道指针指向只读取部分内存,所以我改变了我的第一次尝试buffer[0]=0;到上面.但我不明白为什么这个也不起作用?!

and*_*ett 6

函数的最后一行*buffer = 0是尝试设置指针引用的值buffer.

由于buffer从未初始化,因此包含和不确定的值,解除引用buffer很可能导致段错误.

对于大多数项目,您不应该自己编写参数解析代码.有许多强大而高效的库可以比你(或我)做得更好.当您在Linux上编写C语言GNU时,getopt是一个不错的选择.