【发布时间】:2013-03-23 11:05:22
【问题描述】:
为什么在使用 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;
}
【问题讨论】:
-
他们不平等不是好事吗?如果是的话,它不会是太多的副本......
-
如何得到相同的输出?不要调用 strdup!
-
您确定需要
(int)c,而不是atoi(c)?\ -
在 64 位 Windows 上的 VC++ 中,
int是 32 位,但指针是 64 位。不要使用int来存储指针,因为它不能保证适合。 -
不保证
c和ca在第一部分也将相等。它是实现定义的。
标签: c++ c pointers type-conversion strdup