第1个回答 2008-04-04
选C
str是一个二维数组,而你定义的p是一个指向字符的指针,其实在这题中你用str给p初始化,编译器自动进行了类型转换。p初始化以后指向这个数组的首地址,在p+20进行运算时,由于p是指向字符的指针,所以该表达式结果为在p所指的地址基础上增加20个字符所占的空间,因为数组是一个2行20列的数组p刚开始指向str[0][0],加了20以后就会指向
str[1][0],而该地址是"Beijing"的首地址,所以strlen求值时求的是第二个字符串的长度为7.
第2个回答 2008-04-04
#include
main()
{ char str[][20]={"H
ello","Beijing"},*p=str;
printf("%d\n",strlen(p+20));
}
答案:5
strlen()是字符数组长函数,只计算不包括'\0'
*p=str 等同于*p=&str[0][0] 从一行一列开始就是H
Hello
Beijing
看懂了吧
第3个回答 2008-04-04
你想问的是什么问题?
-------------------
答案C
*p是指向字符串str的指针,而str是20字节每组,那么p是指向str的第一个字符串,p+20就是指向下一字符串-Beijing,所以答案C,有不明白的可以补充!
第4个回答 2008-04-04
程序本身就有问题,严格来说,你都不可能通过编译,何来的结果.
不过按照题目的思路来看,应该是C