C语言,求过程。 10
15.下列程序执行后的输出结果是()。main(){chararr[2][4];strcpy(arr,"you");strcpy(arr[1],"me");arr[0][...
15.下列程序执行后的输出结果是 ( )。
main()
{ char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s \n",arr);
}
(A) you&me (B) you (C) me (D) err 展开
main()
{ char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s \n",arr);
}
(A) you&me (B) you (C) me (D) err 展开
2个回答
展开全部
arr指的就是arr[0],因此第一个strcpy是吧"you"赋值进arr的第一个字符串中,而第二个strcpy是吧"me"赋值进arr的第二个字符串中。
随后的arr[0][3]则是arr的第一个字符串中的第三个字符。
最后输出就是输出arr的第一个字符串,
但是在arr[0][3]='&'执行之前arr在内存中是这样的(其中arr也就是arr[0]指向的是字符'y',arr[1]指向的是字符'a',二维数组在内存中也是呈线性排布的):
'y' 'o' 'u' '\0' 'a' 'n' 'd' '\0'
执行完arr[0][3]='&'后arr则变成了
'y' 'o' 'u' '&' 'a' 'n' 'd' '\0'
最后printf函数在输出字符串的时候是从首地址开始循环输出字符直到遇到'\0'为止,由于字符串"you"的结束符'\0'被'&'覆盖了,因此printf在输出完"you"之后并不会停止,而是输出完整个"you&me"
随后的arr[0][3]则是arr的第一个字符串中的第三个字符。
最后输出就是输出arr的第一个字符串,
但是在arr[0][3]='&'执行之前arr在内存中是这样的(其中arr也就是arr[0]指向的是字符'y',arr[1]指向的是字符'a',二维数组在内存中也是呈线性排布的):
'y' 'o' 'u' '\0' 'a' 'n' 'd' '\0'
执行完arr[0][3]='&'后arr则变成了
'y' 'o' 'u' '&' 'a' 'n' 'd' '\0'
最后printf函数在输出字符串的时候是从首地址开始循环输出字符直到遇到'\0'为止,由于字符串"you"的结束符'\0'被'&'覆盖了,因此printf在输出完"you"之后并不会停止,而是输出完整个"you&me"
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询