C语言初级问题switch语句1
发布网友
发布时间:2023-10-10 19:24
我来回答
共2个回答
热心网友
时间:2024-11-19 03:40
char grades; 改成
char *grades;追问谢谢回复,改了之后出现这种提示
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
热心网友
时间:2024-11-19 03:40
char grades; 改成
char grades[100];
grades="Brilliant"; 类似这样的改成strcpy(grades,"Brilliant");
需要分配空间,否则"Brilliant" 在swith内有效,外面就释放了。这个指针指向的是未知地址会有错误追问我看书上的语句是这么写的,但是书上没有给出swtich之前的语句,所以我按照现学的推测写,结果出现错误,那如果按照书上的grades="Brilliant"有没有办法完成这个程序?
追答跟编译器有关。最新编译器可能会识别他是常量字符串,可能一直保存。
但是有的老的编译器,比如win-tc,vc6.0都不行。
这么写本来就 有很大问题。
字符串在c语言是数组,数组就需要申请和释放。
直接赋值肯定会导致空指针。