c - 如何在代码中将指针变量 *b[3] 与数组 a[3] 进行比较?
问题描述
我尝试了以下方法,但它似乎无法正常工作。
#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};
但正如评论中提到的,将随机整数存储在指针中几乎没有意义。结果是实现定义的,因此此代码不可移植。
推荐阅读
- julia - Fixedeffectmodels.jl 中的常数项
- php - 必须登录两次才能成功 php
- python - Opencv图像处理、稀释、交集、补
- webpack - Sentry 源地图 - 故障排除
- php - 使用 PHP 匿名类进行测试和模拟
- ios - 无法在 UserDefaults 中存储自定义对象数组
- nginx - 在同一 LAN 服务器 nginx 上运行多个 Web 应用程序
- visual-studio - 如何修复 CS0029
- javascript - 如何防止由于 NextJS 上的参数而导致额外的重新渲染?
- domain-driven-design - DDD - 与第三方系统集成时如何确保聚合一致性?