字符串声明分段错误

String declaration segmentation fault

声明字符串后,出现分段错误。 我不知道如何解决这个错误——你能解释一下吗?

代码版本 1(使用 cs50.h 中的 typedef char *string;):

int main (int argc, string argv[])
{
    string key = argv[1]; 
    checkKey(key, argc);
}

int checkKey(string text, int n)
{
    //check if text is alphabetical and if argc has the desired amount of command-line elements 
}

代码版本 2:

#include <stdio.h>
#include <ctype.h>
#include <cs50.h>

int main (int argc, char* argv[])
{
    printf("%d elements in argc and %s in argv[1]\n", argc, argv[1]);
    char* key = argv[1];
}

如果您 运行 您的程序没有命令行参数,它会收到 argc 的值 1 和一个大小为 2 的数组 argv argv[0] 中的程序和 argv[1] 中的 NULL 中的程序。

如果您的函数 charkKey() 取消引用它作为第一个参数接收的指针,您将调用未定义的行为,这可能会导致分段错误。