在C ++中,为什么可以将无符号char和有符号char变量彼此转换(当然实现定义为!!!),但是它们的指针不能彼此转换呢?

我缺少一些基本的东西吗? 对不起,如果我缺少一些非常明显的东西,请原谅。 我是一个相对较新的人,正在努力提高自己。 PS:Stackoveflow上可能有类似的问题,但是由于网络连接速度慢,搜索非常麻烦,所以我最后还是问了这个问题。

===============>>#1 票数:1

更新当然可以。 当甚至不需要强制转换时,它最初被编译为C。 我已经进行了修改,因此可以在C ++中编译(您可能会使用cout)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char *sptr;
    unsigned char *uptr;
    sptr = (char*)malloc(100);
    strcpy(sptr, "One world");
    uptr = (unsigned char*)sptr;    // <--- works with a cast
    printf ("%s\n", uptr);
    free(sptr);
    return 0;
}

程序输出:

One world

===============>>#2 票数:0

哦,但是它们可以在彼此之间转换! 您只需要进行相应的转换。 该语言不会为您做到这一点,因为将Foo存储在的内存中就像是条形一样,这是灾难的根源。 我不建议这样做,因为在大多数情况下,使用正确的类型是更好的方法。

对于像整数这样的标量类型(各种char类型都是整数!),转换通常也是不可取的,但是至少它不会以不同的方式解释现有数据,而是从现有数据中创建一个新对象。

===============>>#3 票数:0

您不能将指针变量转换为char变量,因为Poiter仅包含变量的地址。 指针变量不能包含任何其他类型的数据。 它们只能包含地址。

  ask by Ujjwal Aryan translate from so

未解决问题?本站智能推荐:

1回复

C ++混合指向不同char类型的指针

我正在用C ++编写一个程序,该程序采用ACT(Adobe色彩表)文件并将其转换为纯文本可读的JASC-PAL文件。 我想从ACT文件中读取二进制数据并将其存储在内存中以供使用。 我编写了以下代码来做到这一点,并且它使用BCC55构建。 问题是我得到一个构建警告:“警告W8079:在函数r
1回复

将类型转换结构指针转换为char指针引用

是否可以将结构指针转换为char指针引用? 我知道我们可以将任何指针类型转换为任何其他指针类型。 但是当我尝试类型转换结构时出现错误。 我正在使用C ++编译器。 错误: 错误:无效的从类型'char *'的临时类型的'char *&'的非常量引用的初始化 请参见以下示例:
3回复

指向char的指针

第一个正确吗? 两者之间有什么区别吗? 我的猜测是第一个分配在堆上,另一个分配在堆栈上。我是对的还是其他区别?
1回复

char指向数组的指针转换为char指向指针的指针

我有一个功能: 我将其调用如下: 结果我得到了错误: 为什么无法进行转换? 因为我认为以下是正确的:
3回复

C ++ char指向char变量的指针

我得到了这样的方法标题: 是否可以说, ? 我知道“输入”将采用char数组的形式。 我显然不是C ++指针的新手,这使我不知所措。 我尝试研究如何使用char指针函数参数,但是找不到足够具体的方法来提供帮助。 谢谢您的帮助。
2回复

char指向指针的指针

我试图看到绕过指针。 我对此感到困惑 说num =3。则产生以下输出 我读到&运算符引用了它所指向的指针的地址。 在这里,它不应该返回err [num] [1]的地址,而不是返回从那里存储的内容。 另一方面, &[num]返回地址。 我在这里很困惑。 如
6回复

将指针与char类型变量一起使用

我正在学习使用C ++编程微控制器。 NewbieHack.com有一个很棒的教程,但我只停留在处理指针的部分。 在他的代码中,他编写了一个名为Send_A_String的函数。 在代码的int main()部分中,他按以下方式调用该函数 我对“ NewBieHack.c
1回复

我们为什么要让char类型的指针指向const * [重复]

这个问题已经在这里有了答案: C和C ++中的字符串文字类型是什么? 4个答案 为什么我可以将字符串文字分配给char *指针[重复] 3个答案 有一行这样的代码: char* arr="Hello" 。 我听说字符串Hello位于某个常量对象的某个位
3回复

如何将指向char的指针强制转换为指向int的指针

我想把一个指向pc的指针pc指向指向int的点pi 是否有任何更简单的方法来执行此演员并使编译器保持沉默?