首页 > 试题广场 >

下面选项中正确的赋值语句是(设 char a[5],*p=a

[单选题]

下面选项中正确的赋值语句是( char a[5],*pa;)

  • p="abcd";
  • a="abcd";
  • *p="abcd";
  • *a="abcd";
p是char类型指针,可以指向字符串常量;a是数组的首地址,是常量而不是变量,不能对其赋值。
发表于 2017-05-26 22:23:56 回复(0)
p里面存的是数组a的首元素的地址,p是一个指针变量,指向字符型数据,指向字符变量,不是把“abcd”这些字符存放到p中,也不是把字符串赋给*p,只是把“abcd”的第一个字符的地址赋给指针变量p。
发表于 2017-06-21 14:19:15 回复(2)
char a[5]; a指向一块内存区域,它的地址和容量在生命期内不会改变,只能变内容;
a="abcd";指向字符串常量,地址改变了,错。
发表于 2017-06-20 21:02:22 回复(0)
A选项,
cout << p,输出——abcd;
cout << *p,输出——a;
cout << a,输出——空;
B选项,
报错,invalid array assignment|;
C选项,
报错,invalid conversion from 'const char*' to 'char';
D选项,
报错,和C选项一样,invalid conversion from 'const char*' to 'char'。

发表于 2019-04-16 17:24:00 回复(0)
a是char *const类型的右值类型,指针常量,不能赋值。B错误。
p指向a首地址的内容,p的指向可改变。A对。“abcd”相当于无名数组。
C,D的等式右边均为char *类型,左边却是char类型。均错误。

发表于 2018-03-19 21:19:10 回复(0)
*p要么在定义的时候初始化写成char* p="abcd";
要么定义完成后使用p=“abcd”来初始化,但是不能使用*p="abcd"来初始化,因为*p不能作为左值。
发表于 2019-08-14 11:12:51 回复(0)
"abcd" 是指在静态区分配一块内存,存入字符串abcd,然后返回一个可以访问此字符串的首地址。 所以只能对char*类型的指针赋值。
发表于 2019-06-21 10:52:12 回复(0)
数组复制
发表于 2018-05-21 12:18:27 回复(0)
为什么我在VC环境下编译提示 error: C2440: “=”: 无法从“const char [6]”转换为“char *”??字符串是一个数组,指针指向它得到的不是地址??
发表于 2018-04-02 23:52:26 回复(0)