【发布时间】:2017-07-28 02:36:31
【问题描述】:
我有一个给定的字符串
char *names = "ABC";
现在,作为理解指针和它的一部分,我想将字符串转换为 ascii 代码,但使用 pointer。
这是我到目前为止所做的。
char *name = "ABC";
int *array;
array = (int *) name;
printf("the array value is %d ",*array);
但不幸的是,我无法理解为什么它将 4407873 打印为值。
注意:我也知道可以使用 atoi 函数完成,但如果我能理解如何执行上述方法,那将非常有帮助。
【问题讨论】:
-
十六进制字符串的四个字节(包括终止符)是
41 42 43 00。你的机器是 little-endian,所以当将这 4 个字节读取为int时,它们会反过来使用,十六进制00434241,十进制是4407873。但这无论如何都是不好的行为。 -
不清楚你在问什么。 “ABC”的ascii代码是什么意思?使用 atoi 可以做什么?
-
您的意图非常清楚,但看起来,您对指针、强制转换和其他 C 语言基础知识存在根本性的误解。请帮自己一个忙,读一本 C 书。
-
您希望打印出什么数字?我们可能会告诉您如何到达那里。
-
尽管有名字,
char不是字符类型——它是一个整数类型。在许多环境中,'A'==65是正确的。
标签: c pointers strict-aliasing typecast-operator