2012-03-05 116 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