c++ - 静态变量输入时存储什么值?

标签 c++ c variables static scanf

#include<stdio.h>

char *getname()
{
    static char name[30];
    scanf("%s",name);
    return name;
}

void main()
{
    char * name1,*name2;
    name1 = getname();
    name2 = getname();
    printf("%s %s\n",name1,name2);
}

输入: jack ·吉尔

输出: 吉尔吉尔

我认为应该是 Jack Jack,因为它存储了输入的初始值。

最佳答案

name1name2 指向同一个对象:name 的第一个元素。

由于指针 name1name2 具有相同的值,因此打印数组时得到相同的结果是正常的。

静态对象的生命周期是程序的整个执行过程,静态对象的地址在程序执行过程中不会改变。

关于c++ - 静态变量输入时存储什么值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16451168/

相关文章:

c++ - std::find 与从 vector 导出模板

c++ - 在 VS2008 的 try/catch 中抛出异常

php - 无法将 session 变量存储到数据库中

javascript - TypeScript 中的不可变数据

javascript - 是否可以从另一个文件实时获取 JavaScript 变量?

c++ - 检测 Windows TDR 并从中恢复?

c++ - 从数列中减去一个数后,剩下的数中有多少是正数?

c - 为什么匹配的正则表达式字符串即使匹配也没有存储?

c - 关于使用数组和位 vector 的集合

javascript - 为什么在 javascript 中计算斐波那契比在 haskell 中更快?