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日

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注