我试图检查指针是否指向某个字符。
像这样:
#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 ==&#34;&#34)
是否可以比较指针和整数?
还有其他方法可以解决这个问题吗?
我可以在不打印的情况下找出哪个字母指向* s?
答案 0 :(得分:6)
"a"
不是字符,而是字符串文字。 'a'
是一个字符文字,这是你在这里寻找的。 p>
另请注意,在您的比较*s == "a"
中,实际上"a"
是指针,*s
是整数... *
dereferences {{ 1}},这导致s
(整数)存储在char
指向的地址。但是,字符串文字充当指向字符串s
的第一个字符的指针。
此外,如果您通过将比较更改为"a"
来修正比较,则只会检查*s == 'a'
的第一个字符是否为s
。如果您想比较字符串,请参阅'a'
。
答案 1 :(得分:1)
{{ host | markdownify | remove: '<p>' | remove: '</p>' }}
括在char
而不是''
""