2014-02-19 263 views
0

请帮忙修复这个程序。 我尝试使用指针,而不是阵列打印指针数组,但我得到这个错误:指针阵列

pointer_multi_char4.c: In function ‘main’: 
pointer_multi_char4.c:7:11: error: expected expression before ‘{’ token 

这是代码:

#include <stdio.h> 

int main (void){ 
char **message; 
message= { "Four", "score", "and", "seven", 
       "years", "ago,", "our", "forefathers" }; 
printf("%s\n",message); 
return 0; 
} 

我怎样才能修复这个代码? 请人给我解释一下什么是错的代码

+0

此外,你确定你不只是想使用一个char *字符串“四个进球,87年前,我们的祖先”? – Linuxios

+0

'char **'!='char * []'。 –

回答

1
#include <stdio.h> 

int main (void){ 
    char **message; 
    message= (char* []){ "Four", "score", "and", "seven", 
       "years", "ago,", "our", "forefathers" }; 
    int numOfMessage = 8; 
    while(numOfMessage--){ 
     printf("%s\n", *message++); 
    } 
    return 0; 
} 
5
#include <stdio.h> 

int main(){ 
    char *message[] = { "Four", "score", "and", "seven", 
         "years", "ago,", "our", "forefathers", 0 }; 

    int loop; 
    for (loop = 0; message[loop]; ++loop) printf("%s\n",message[loop]); 
    return 0; 
} 

在这种情况下,大括号(做一个假设)是要初始化数组(因此使用char *message[]代替char **

由于它是一个数组需要循环在它。我用一个空指针来标记数组的末尾

EDIT

然后@Lundu只需要

#include <stdio.h> 

int main() 
{ 
    const char * mesage="Four scor and seven years .... forefathers"; 
    printf("%s\n", message); 
    return 0; 
} 
+2

值得一提的是,在@EdHeal示例中,**初始化**与声明位于同一行。如果你将它作为两个独立的指令,它不再是一个初始化 - 它是一个**赋值**。 –

+0

我试图用指针而不是阵列来打印这条消息, –

+0

@ Smac89 - 更快的速度 –