题目
若有定义"char a [10], *p=a; ”,那么下列赋值语句正确的是( )。
A.a [] ="abcdefg";
B.a=”abedefg";
C.*p=”abcdefg";
D.p=”abcdefg ";
解答
正确答案是 D
将字符串赋值给字符数组: ********************************************** 1.定义时直接用字符串赋值。 char a[10]="hello";但是不能先定义再赋值,即以下非法:char a[10];a[10]="hello"; ********************************************** 2.利用strcpy。 char a[10]; strcpy(a,"hello"); ********************************************** 3.利用指针。 char *p; p="hello";这里字符串返回首字母地址赋值给指针p。另外以下非法:char a[10]; a="hello"; a已经指向在堆栈中分配的10个字符空间,不能再指向数据区中的"hello"常量。可以理解为a是一个地址常量,不可变,p是一个地址变量。 ********************************************** 4.数组中的字符逐个赋值。
怎么没能早点看到你这篇文章呢
这篇文章写得不错 !
请问这是依据什么语言给的答案 bcd的字符串都含有中文引号
双引号做了3件事: 1.申请了空间(在常量区),存放了字符串 2. 在字符串尾加上了'/0' 3.返回地址 你这里就是 返回的地址 赋值给了 p
选项,应该是a[10]="abcdefg"
B选项,a是数组首地址不能这样赋值
C选项,*p=a,也是指针地址变量,不能这样赋值
D正确