初始化char *

时间:2012-03-05 06:43:47

标签: c

当我这样做时:

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

我在output[0] = '\0'处获得了段错误。

我做错了什么?

7 个答案:

答案 0 :(得分:6)

问题可能在其他地方,这部分代码不应该是段错误的。也许你试着在某个地方打印出来?

但是我不确定它是否符合您的要求。你声明了char指针数组:

char* output[255];

在那里写char:

output[0] = '\0';

您可能想要声明字符数组:

char output[255];

答案 1 :(得分:2)

您已创建char**类型,而不是char*类型。

正确的语法是char output[255];

答案 2 :(得分:1)

更好的方法是:

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

Sesh的回答是C ++。

答案 3 :(得分:1)

您想声明一个字符数组,而不是字符的POINTER。它应该是:

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

答案 4 :(得分:0)

您的变量输出是一个指针数组,而不是一个char数组。删除星号。

答案 5 :(得分:0)

我遵守了你发布的程序,但除了警告我没有得到任何段错误。它的gcc 4.1.2

答案 6 :(得分:-2)

您基本上是在声明一个指针数组(指向char的指针)。并且'\0'不是指针的有效值。如果您打算分配256 char内存,则重写:

char* output = new char[256];