2012-03-05 202 views
2

當我這樣做:初始化字符*

main(){ 
    char* output[255]; 
    output[0] = '\0'; 
} 

我得到output[0] = '\0'段錯誤。

我在做什麼錯?

+5

哇,6個答案,而不是一個人指出,這不應該段錯誤。 – Mysticial 2012-03-05 06:49:54

+0

@Mysticial成爲第一個:-) – 2012-03-05 06:51:22

+0

@Mysticial最讚的人使用不同的語言比問題! – 2012-03-05 06:51:57

回答

6

該問題可能是其他地方,這部分代碼不應該段錯誤。也許你試圖在某處打印它?

但是我不確定它是否做到了你想要的。您聲明字符指針數組:

char* output[255]; 

而寫的字符有:

output[0] = '\0'; 

你可能想聲明字符數組:

char output[255]; 
-1

你基本上是在聲明一個指針數組(指向char的指針)。而'\0'不是指針的有效值。如果您打算分配256 char內存中,然後重寫:

char* output = new char[256]; 
+1

你怎麼在C中使用'new'?這個問題不是關於C++的。 – 2012-03-05 06:48:17

+4

爲什麼'\ 0'不是指針的有效值?它只是計算爲NULL,這是有效的(至少如果不解除引用)。 – peper0 2012-03-05 06:50:32

+0

請僅使用c語法 – noMAD 2012-03-05 07:07:35

0

你的變量輸出是一個指針數組,而不是字符數組。刪除星號。

2

您已創建char**類型,而不是char*類型。

正確的語法是char output[255];

1

這樣做的更好的方法是:

#include <stdlib.h> 
main() 
{ 
    char* output = malloc(255); // Allocates the pointer 
    output[0] = '\0'; 
} 

Sesh的答案是C++。

1

要聲明的字符數組,而不是指向字符的指針。它應該是:

main(){ 
     char output[255]; 
     output[0] = '\0'; 
    } 
0

我遵守你已經發布的程序,但除了警告我沒有收到任何段錯誤。其海灣合作委員會4.1.2