2010-11-15 44 views
-1

我有一个字符指针,我想显示一个整数值。然后是正确的以下声明:如何执行类型转换?

printf("%d",*(int *)ptr); 

你可以解释我一下吗?

+0

什么是整数值?第一个角色?它包含作为一个字符串? – 2010-11-15 03:25:31

+2

这个整数值从哪里来?该字符串是否应该包含一个整数,即字符串“12”?或者你想要字符串的ASCII值?或者是什么? – 2010-11-15 03:25:44

+0

你有没有探索过api atoi()。它将字符串直接转换为整数 – Alam 2010-11-15 03:34:39

回答

2

如果字符指针(字符串)指向存储字符串格式的数字的有效C字符串,如"123",则只需使用%s格式说明符即可。

printf("%s", ptr);

%d格式说明用于打印存储为int类型的二进制符号的整数数字。

0

不,这通常是错误的,因为char只有1个字节,而int通常是4个字节。您访问的其余字节可能无效,具体取决于它指向的内容,这可能是未定义的行为。做正确的方法是先拿到char值,然后将其转换为int

(int)*ptr 

当然,在这种情况下,显式的转换可能没有必要在所有,作为字符值会隐式提升为一个整数。

0

知道变量ptr被声明为什么类型会很有帮助。

如果它被声明为int * ptr;那么只需要一个解引用

即。 printf(“%d”,* ptr);

因为PTR的类型是int *的和* PTR因此的int型,其中%d匹配

然而,我猜测的ptr被宣布无效* PTR;在你的例子中,如果你知道它实际上指向一个int,那么 ,那么在通用指针 类型转换为int *之前是正确的,然后解除引用。

即。 printf(“%d”,*(int *)ptr);