问题描述
- 以下程序的运行结果是:以下程序的运行结果是:
-
以下程序的运行结果是: #include
void sub(int s[],int y)
{ static int t=3; y=s[t];t--; } main() { int a[]={1,2,3,4},i,x=0; for(i=0;i<4;i++){ sub(a,x);printf("%d",x);} printf("\n"); }
A)1234 B)4321 C)0000 D)4444
解决方案
C
参考:http://codepad.org/keBnMDZI
解决方案二:
#include
#include
void sun(int s[], int y);
void sub(int s[],int y)
{
static int t = 3;
y = s[t];
t--;
}
void main()
{
int a[] = { 1, 2, 3, 4 }, i, x = 0;
for (i = 0; i < 4; i++)
{
sub(a, x);
printf("%d",x);
}
printf("
");
_getch();
}
运行结果
解决方案三:
本人觉得是D,虽然t是静态的,到循环时从新执行t=3.也就是说虽然保留上回结果,但是从新执行又变为3
解决方案四:
此问题的关系知识点是 static 的应用吧,在函数中 static 变量只初始化一次、以后每次减一(而不再初始化为 3)。
解决方案五:
选C main函数里的x没有改变,一直是0.
解决方案六:
数据库中运行程序前和运行程序后结果是一样的原因
下列程序的运行结果是
面试题:以下程序的输出结果是
时间: 2024-10-21 17:46:32