首页 > 试题广场 >

设有定义:char *p;,以下选项中不能正确将字符串赋值给

[不定项选择题]
设有定义:char *p;,以下选项中不能正确将字符串赋值给字符型指针 p 的语句是( )
  • p=getchar();
  • scanf("%s",p);
  • char s[]="china"; p=s;
  • *p="china";
A选项 : 首先类型就不匹配
B选项 : p指针在定义的时候没有分配内存, 所以这行代码在运行的时候会报野指针错误
C选项 : 正确, 指针p指向数组s
D选项 : *p代表p指向内存的内容, 这里要使用p="china"才正确
编辑于 2017-04-06 12:11:41 回复(5)
对参与解答的大神答案总结一下:
A选项 :错误。 首先类型就不匹配, getchar() 函数返回值是int,只能赋值给int 或者char类型,此时p为char*类型
B选项 :  错误。 p指针在定义的时候没有分配内存, 所以这行代码在运行的时候会报野指针错误
C选项 : 正确。 指针p指向数组s
D选项 : 错误。  *p代表p指向内存的内容, 这里要使用p="china"才正确
发表于 2017-04-06 15:31:49 回复(1)
害,选了C🙃
发表于 2021-03-09 11:08:10 回复(0)
scanf() char指针,要malloc或者预设数组的!!!
发表于 2017-04-06 11:20:12 回复(0)
B选项格式都没错,但少了一个内存分配的语句,运行时会导致段错误😆
发表于 2021-08-24 10:43:41 回复(0)
C:字符串本身就是指针
发表于 2017-03-07 20:47:22 回复(0)
B.*p是个野指针,没有指向内存 Agetchar返回值类型为int,可以给int或者char类型赋值,但是此时p的类型为char*类型不匹配
编辑于 2023-04-26 17:32:59 回复(0)
A选项:getchar() 函数返回值是int,只能赋值给int 或者char类型,此时p为char*类型
D选项:应该为p="china";

B选项,虽然不知道为什么,但是编译不通过
发表于 2017-03-01 16:34:31 回复(2)
A选项 : 首先类型就不匹配 B选项 : p指针在定义的时候没有分配内存, 所以这行代码在运行的时候会报野指针错误 C选项 : 正确, 指针p指向数组s D选项 : *p代表p指向内存的内容, 这里要使用p="china"才正确
发表于 2024-01-27 22:33:36 回复(0)
A,类型不匹配,B,p指针没有初始化也没有分配内存,直接在p所指的位置存字符串会导致未定义行为,导致程序崩溃。D,c语言中指针变量存放的是内存地址而不是字符串本身,如果要让指针p值为字符串,要将字符串的地址赋给p,例如p = “china";此时p会指向字符串的首地址
发表于 2023-08-29 21:07:52 回复(0)
b是野指针了
发表于 2022-09-05 09:32:57 回复(0)
A选项 : 首先类型就不匹配
B选项 : p指针在定义的时候没有分配内存, 所以这行代码在运行的时候会报野指针错误
C选项 : 正确, 指针p指向数组s
D选项 : *p代表p指向内存的内容, 这里要使用p="china"才正确
发表于 2021-11-19 17:10:27 回复(0)
a是字符,b没有分配堆空间,d也没有分配
发表于 2021-10-12 08:40:33 回复(0)

include<stdio.h>

int main() { char *p; scanf("%s",p); // p =getchar(); printf("%s",p); return 0; }

发表于 2017-03-09 18:05:44 回复(2)
为什么可以p=s?
发表于 2017-02-25 13:34:57 回复(1)