gpt4 book ai didi

c++ - 使用 strdup() 后将 char* 转换为 int

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:44 25 4
gpt4 key购买 nike

为什么在使用 strdup(value) (int)value 后返回与之前不同的输出?如何获得相同的输出?

我的简短示例出错了,请使用长示例:这里是完整的测试代码:

#include <stdio.h>
#include <iostream>

int main()
{

//The First Part
char *c = "ARD-642564";
char *ca = "ARD-642564";

std::cout << c << std::endl;
std::cout << ca << std::endl;

//c and ca are equal
std::cout << (int)c << std::endl;
std::cout << (int)ca << std::endl;


//The Second Part
c = strdup("ARD-642564");
ca = strdup("ARD-642564");

std::cout << c << std::endl;
std::cout << ca << std::endl;

//c and ca are NOT equal Why?
std::cout << (int)c << std::endl;
std::cout << (int)ca << std::endl;

int x;
std::cin >> x;
}

最佳答案

因为在您的情况下数组衰减为指针,所以您正在打印一个指针(即,在非奇异计算机上,一个内存地址)。不能保证指针适合 int

  • 在代码的第一部分,cca 不必相等。您的编译器执行某种内存优化(请参阅 here 以获得完整答案)。

  • 在第二部分,strdup 两次动态分配一个字符串,使得返回的指针不相等。编译器并没有优化这些调用,因为他似乎并没有控制strdup的定义。

在这两种情况下,cca 可能不相等。

关于c++ - 使用 strdup() 后将 char* 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com