C语言 求解析 下列语句组中正确的是() A.char *s;s=“Olympic”; B.c

2024-11-09 00:10:10
推荐回答(3个)
回答(1):

正确答案时A,char *s,定义一个字符型指针,而"Olympic"这个表达式所使用的值是这些字符所存储的地址,而非字符本身,所以可以赋值给s;而{"Olympic"},加上大括号后,里面的内容就变成常量了(我是这么理解的),再赋值给指针s就不对了;对与char s[7],如果是
char s[7]="Olympic",这样是可以的,这种是数组的初始化,但是换成C选项就不对,"Olympic"赋值的值是一个地址,而s虽然也有地址,但是这与指针是不一样的,指针的值是地址,而数组的值虽然也是地址,但是却是一个常量,所以不能给常量赋值。

回答(2):

在C语言中,可以通过字符数组存放一个字符串,也可以用字符指针指向一个字符串。
A表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。
C如果改成char s[]="Olympic";也是可以的。

回答(3):

A是正确的
B在C++11标准中可以用
CD中只有声明的时候能这样赋值