首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比较两个内存地址并显示它们相等

比较两个内存地址并显示它们相等
EN

Stack Overflow用户
提问于 2016-09-26 01:31:38
回答 1查看 837关注 0票数 -10
代码语言:javascript
复制
char * str = "012";

int main(int argc, char * argv[]) {
  if (str == argv[1]) {
    printf("success");
  }
}

输出:

代码语言:javascript
复制
./test 0x400634

那么我应该会得到成功的输出。

但是我不能得到任何output.How,我可以比较这两个地址,然后打印出它们相等吗?请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2016-09-26 01:33:59

我认为您对字符串在C中的工作方式有些困惑。

字符串是字符数组,具有相同内容的两个字符串不一定具有相同的地址。

此外,argv只包含字符串。如果您将一个数字传递给您的程序,它将被解释为字符串,而不是数字。因此,当您将argv[1]str进行比较时,即使您可以知道str将位于哪个地址(您不能),您也可以将str的地址与argv[1]的地址进行比较,而不是将其内容进行比较。

如果您希望将argv[1]提取为一个数字,请使用strtol (这里提到的:https://stackoverflow.com/a/20654510/2830652)

代码语言:javascript
复制
if ((long)str == strtol(argv[1], NULL, 16))
{
    printf("success");
}

将允许您比较正确的数据,只需在将地址传递给您的程序时省略地址的0x部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39689772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档