初级c语言问题指教,谢谢~

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:14:46
12、设有下列语句,则( )是对a数组元素的不正确引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;

A: a[p-a] B: *(&a[i]) C: p[i] D: *(*(a+i))

13、设有下列语句:
char str1[]="string",str2[8],*str3,*str4="string";
则( )是对库函数strcpy的不正确调用。此函数用来复制字符串。
A: strcpy(str3,"HELLO3"); B: strcpy(str2,"HELLO2");
C: strcpy(str1,"HELLO1"); D: strcpy(str4,"HELLO4");

帮忙做一下,最好解释一下,谢谢~~

12题:D。
A:*p=a,则p-a=0,a[p-a]就是对a[0]的引用。
B:*(&a[i])先是取a[i]的地址,再取里面的值,相当于对a[i]的引用。
C:因为p=&a,所以p[i]相当于a[i]。
D:*(a+i)相当于是a[i],再对a[i]取值没有意义。
13题:C。
A:这个是行的,str3是一个指针,存放这个字符串的首地址。
B:这个是行的。没有越界。
C:这个不行。对于数组的定义,一定要对其行下标有所规定。
D:这个是行的。
PS:在C中,对于字符串的拷贝函数应该是strcopy()吧,C++中的字符串拷贝是strcpy()。