George Judson 2023-05-19 14:23 采纳率: 0%
浏览 45

C语言static问题

C语言static问题

为什么加上static的变量在主函数中才能返回,不加static返回的就是空?

#include<string.h>
char* longestCommonPrefix(const char** strs, int strsSize) {
    char string[200];//用来存放返回结果
    int k = 0;        //用来定义数组下标
    for (int i = 0; i < strsSize; i++) //用来循环当前是第几个字符串
    {
        for (int j = 0; j <= strlen(strs[i]); j++) {//用来进行列的比较
            if (i == 0) {
                string[k] = strs[i][j];
                k++;
                continue;
            }
            else if (string[j] == strs[i][j]) {
                continue;
            }
            else {
                string[j] = '\0';
            }
        }
    }
    printf("%s\n", string);
    return string;
}
int main() {
    //定义一个字符串数组
    const char* strs[] = { "flower", "flow", "flight" };
    //计算数组长度
    int size = sizeof(strs) / sizeof(strs[0]);
    //调用函数并打印结果
    char* string;
    string = longestCommonPrefix(strs, size);
    printf("The longest common prefix is: %s\n", string);
    return 0;
}
#include<string.h>
char* longestCommonPrefix(const char** strs, int strsSize) {
    static char string[200];//用来存放返回结果
    int k = 0;        //用来定义数组下标
    for (int i = 0; i < strsSize; i++) //用来循环当前是第几个字符串
    {
        for (int j = 0; j <= strlen(strs[i]); j++) {//用来进行列的比较
            if (i == 0) {
                string[k] = strs[i][j];
                k++;
                continue;
            }
            else if (string[j] == strs[i][j]) {
                continue;
            }
            else {
                string[j] = '\0';
            }
        }
    }
    printf("%s\n", string);
    return string;
}
int main() {
    //定义一个字符串数组
    const char* strs[] = { "flower", "flow", "flight" };
    //计算数组长度
    int size = sizeof(strs) / sizeof(strs[0]);
    //调用函数并打印结果
    char* string;
    string = longestCommonPrefix(strs, size);
    printf("The longest common prefix is: %s\n", string);
    return 0;
}
  • 写回答

4条回答 默认 最新

  • 关注

    char string[200];这么写的时候,string就是longestCommonPrefix函数中的一个临时变量,其作用域仅仅再longestCommonPrefix函数中,出了longestCommonPrefix函数就被编译器回收了。
    而 static char string[200];则是静态变量,内存在静态数据区,跟全局变量一样,能够在程序的运行过程中一直存在,也就是出了longestCommonPrefix函数也能正常使用。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月19日