如何在代码中将指针变量 *b[3] 与数组 a[3] 进行比较?
How can I compare a pointer variable *b[3] with an array a[3] as below in the code?
我尝试了以下方法,但似乎无法正常工作。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *a[3] = {1,4,3};
char b[3] = {1,2,3};
int i;
for(i=0; i<3; i++)
{
if(b[i] == a[i])
{
printf("Pass");
}
else
{
printf("fail");
}
}
}
- 错误:警告:指针与整数之间的比较
- [警告] 初始化使指针来自整数而不在 char *a[3]
进行强制转换
如何更正 if(*b[j]== a[j])
以便我可以比较 b
和 a
?
您需要在不收到警告的情况下使用强制转换来执行比较。
if ((char *)b[i] == a[i])
并且在初始化数组的时候也进行了转换:
char *a[3] = {(char *)1, (char *)4, (char *)3};
但是如评论中所述,将随机整数存储在指针中意义不大。结果是实现定义的,因此此代码不可移植。
这是您需要的:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* a[3] = { (char[]) { 1 },(char[]) { 4 }, (char[]) { 3 } };
char b[3] = { 1,2,3 };
int i;
for (i = 0; i < 3; i++)
{
if (b[i] == *a[i])
{
printf("Pass");
}
else
{
printf("fail");
}
}
}
我尝试了以下方法,但似乎无法正常工作。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *a[3] = {1,4,3};
char b[3] = {1,2,3};
int i;
for(i=0; i<3; i++)
{
if(b[i] == a[i])
{
printf("Pass");
}
else
{
printf("fail");
}
}
}
- 错误:警告:指针与整数之间的比较
- [警告] 初始化使指针来自整数而不在 char *a[3] 进行强制转换
如何更正 if(*b[j]== a[j])
以便我可以比较 b
和 a
?
您需要在不收到警告的情况下使用强制转换来执行比较。
if ((char *)b[i] == a[i])
并且在初始化数组的时候也进行了转换:
char *a[3] = {(char *)1, (char *)4, (char *)3};
但是如评论中所述,将随机整数存储在指针中意义不大。结果是实现定义的,因此此代码不可移植。
这是您需要的:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* a[3] = { (char[]) { 1 },(char[]) { 4 }, (char[]) { 3 } };
char b[3] = { 1,2,3 };
int i;
for (i = 0; i < 3; i++)
{
if (b[i] == *a[i])
{
printf("Pass");
}
else
{
printf("fail");
}
}
}