c - 如何比较指针和整数?

标签 c pointers char

<分区>

我正在尝试检查指针是否指向某个字符。

像这样:

#include<stdio.h>
#include<string.h>
#define a 3
int func(char *);
int main()
{
char *s="a";
int type;
type=func(s);
printf("%d",type);

    return 0;
}
int func(char *s)
{
int type;
if(*s=="a") 
{
type=1;
}
return type;

}

但我不断收到警告:警告:指针和整数之间的比较 如果(*s==“a”)

是否可以比较指针和整数?

还有其他方法可以解决这个问题吗?

我可以在不打印的情况下找出哪个字母指向 *s 吗?

最佳答案

"a"不是一个字符,它是一个字符串文字。 'a'是字 rune 字,这就是您要在此处查找的内容。

另请注意,在您的比较中 *s == "a"它实际上是 "a"这是指针,*s这是整数... *取消引用 s ,结果为 char (一个整数)存储在 s 指向的地址中.然而,字符串文字充当指向字符串 "a" 的第一个字符的指针。 .

此外,如果您通过将比较更改为 *s == 'a' 来修复比较, 你只是在检查 s第一个字符'a' .如果您想比较字符串,请参阅 strcmp .

关于c - 如何比较指针和整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828179/

相关文章:

arrays - 传递给 CUDA 的结构中的指针

c# - 为什么用于 Unicode 属性测试的 C# System.Char 方法有两个重载?

c - 使用循环将字符添加到 c 中的 "strings"数组时遇到问题?

c - C中的sprintf和printf有什么区别?

c - 什么是文件序列号?

c - 警告 : passing argument 1 of ‘word_search’ from incompatible pointer type [enabled by default]

java温度转换程序不工作

c - Makefile 中缺少分隔符?

检查 C 中的标准输入管道是否为空

无法在赋值中将 'float*' 转换为 'float'