#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 Jill

输出:Jill Jill

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

最佳答案

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

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

静态对象的生存期是程序的整个执行过程,并且静态对象的地址在程序执行期间不会更改。

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

10-11 16:52