关于c语言程序的一个问题

img

img

img


可以解释一下为什么第一个第三个可以正常运行,而第二个少了static就不行吗

因为第二个方法里,months是一个二维字符数组局部变量,Number2Alpha()函数返回的是这个二维数组中的地址,而这个二维数组在函数退出后就无效了
第三个方法在前面加上static,使得months变成静态变量,而不是局部变量,这样返回的地址即使在函数退出以后任然有效
第一个方法也可以,是因为那里定义的months是一个字符串指针数组的,虽然那里的months也是局部变量,但是数组里存的指针是字符串常量的地址,字符串常量的地址是始终有效的。