本帖最后由 yexing 于 2020-4-13 20:41 编辑
在C语言中,所有的数组名都是一个指向该数组第0个元素的指针(如果还没学习,以后就会了解的)
你拿一个指针和一个字符比,它们是两个完全不同类型的变量,当然无法比较。
- char str; //是一个字符变量
- char str[10]; //是一个长度为10的字符数组变量
复制代码
如果要修改一个可比较的代码的话,应该是这样:
*涉及指针知识,如果看不懂请跳过,以后学指针就懂了,这里只是给你提供一个可行的方案
*不建议像下面那样做,这里只是按你的思路写一个可行的方案,因为字符数组一般有个表示字符串结尾的'\0'字符,但是这里并没有添加'\0'字符,会引发越界问题
- #include <stdio.h>
- int main(void)
- {
- char gender[1];
-
- scanf("%c", &gender); //因为gender指向第0个元素,所以直接取址没问题
-
- if (*gender == 'M') //'*'是取值符,即取gender指向的内存地址中存放的值
- {
- printf("相同!\n");
- }
- else
- {
- printf("不同!\n");
- }
-
- return 0;
- }
复制代码