2010-08-26 78 views
0

我在做C语言编程,需要帮助解决这个问题..初始化指向一个字符指针全球

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

我有一个头文件这三行。前两行很好,但第三行会出现错误。显式的错误是“初始化元素不是常量”。

是否有任何其他方式将ptr的地址分配到*ptr2全球?或者,这是不可能实现全球? 我想这样做ptr2可以是常见的接入点,但它指向的内容可以根据需要进行更改。

回答

8

首先,这样的:

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

ptr的地址不分配给ptr2。它的str地址(包含在ptr)分配给ptr2,假装它是一个char**代替char*,可能有灾难性的后果后,当您尝试使用它。你大概的意思是:

char ** ptr2 = &ptr; 

由于&ptr(该地址)的确是恒定的,不像ptr(价值),这应该没有错误编译。另外,这是你真正想要的东西。

0

我的猜测是,你要ptr2指向ptr。这意味着分配的ptr地址ptr2,不*ptr2你要做这样的:

char** ptr2 = &ptr; 

我不明白你的目标。 ptr也可以根据需要进行更改。

请审议关于您的变量更好的名称。

+0

我觉得变量的名称已被伪装,因为原来的变量名可能是无关紧要的。 – dreamlax 2010-08-26 02:00:56

+0

谢谢你们这样快速的回答!它修复了错误:) – ilikeC 2010-08-26 02:30:49