我在做C语言编程,需要帮助解决这个问题..初始化指向一个字符指针全球
char str[] = "Hello";
char * ptr = str;
char ** ptr2 = (char**)ptr;
我有一个头文件这三行。前两行很好,但第三行会出现错误。显式的错误是“初始化元素不是常量”。
是否有任何其他方式将ptr
的地址分配到*ptr2
全球?或者,这是不可能实现全球? 我想这样做ptr2
可以是常见的接入点,但它指向的内容可以根据需要进行更改。
我在做C语言编程,需要帮助解决这个问题..初始化指向一个字符指针全球
char str[] = "Hello";
char * ptr = str;
char ** ptr2 = (char**)ptr;
我有一个头文件这三行。前两行很好,但第三行会出现错误。显式的错误是“初始化元素不是常量”。
是否有任何其他方式将ptr
的地址分配到*ptr2
全球?或者,这是不可能实现全球? 我想这样做ptr2
可以是常见的接入点,但它指向的内容可以根据需要进行更改。
首先,这样的:
char ** ptr2 = (char**)ptr;
的ptr
的地址不分配给ptr2
。它的str
地址(包含在ptr
)分配给ptr2
,假装它是一个char**
代替char*
,可能有灾难性的后果后,当您尝试使用它。你大概的意思是:
char ** ptr2 = &ptr;
由于&ptr
(该地址)的确是恒定的,不像ptr
(价值),这应该没有错误编译。另外,这是你真正想要的东西。
我的猜测是,你要ptr2
指向ptr
。这意味着分配的ptr
地址ptr2
,不*ptr2
你要做这样的:
char** ptr2 = &ptr;
我不明白你的目标。 ptr
也可以根据需要进行更改。
请审议关于您的变量更好的名称。
我觉得变量的名称已被伪装,因为原来的变量名可能是无关紧要的。 – dreamlax 2010-08-26 02:00:56
谢谢你们这样快速的回答!它修复了错误:) – ilikeC 2010-08-26 02:30:49