gpt4 book ai didi

c - 全局初始化指向 char 指针的指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:50 27 4
gpt4 key购买 nike

我正在做 C 编程,需要帮助解决这个问题..

char str[] = "Hello";
char * ptr = str;
char ** ptr2 = (char**)ptr;

我在头文件中有这三行。前两行没问题,但第三行会出错。明确地错误是“初始化元素不是常量”。

是否有任何其他方法可以将 ptr 的地址全局分配给 *ptr2?或者这不可能在全局范围内实现?我希望完成此操作,以便 ptr2 可以成为公共(public)访问点,但如果需要,可以更改它所指向的内容。

最佳答案

首先,这个:

char ** ptr2 = (char**)ptr;

不将ptr 的地址分配给ptr2。它将 str 的地址(包含在 ptr 中)分配给 ptr2 并假装它是一个 char** 而不是char*,稍后当您尝试使用它时可能会导致灾难性的后果。你的意思可能是:

char ** ptr2 = &ptr;

因为 &ptr(地址)确实是常量,不像 ptr(值),这应该编译没有错误。另外,无论如何,这都是您真正想要的。

关于c - 全局初始化指向 char 指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3571483/

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