Typecast是一个指向char *的空指针

时间:2010-04-26 18:43:56

标签: c pointers char nullpointerexception

假设我的char* elem应该包含char**elem[0] = char**elem[1...m]= <more chars>。有没有办法可以在char* elem内放置一个空ptr?当我尝试设置elem = NULL时,它会给我一个类型错误,因为NULL是一个int。

非常感谢任何帮助!

5 个答案:

答案 0 :(得分:1)

如果您要查找二进制0,请尝试'\ 0'
这是在字符串末尾的空终止(char *)

答案 1 :(得分:1)

char*指向char,而不是char*。除非您的体系结构具有8位地址或者您的字符比8位宽,否则您无法将指针塞入字符。

答案 2 :(得分:1)

问题不是NULL0,它们是相同的并且意味着空指针,这是一个与算术0或二进制0不同的概念。您的问题很可能与定义你的阵列。

字符串大小写(指向char的指针):

char *s;
s = malloc(10 * sizeof(char));
s[0] = 'H';      /* set char */
s[1] = NULL;     /* not ok */
s[2] = '\0';     /* binary 0, end of string marker */

指向char的指针指针:

char **x;
x = malloc(10 * sizeof(char *));
x[0] = "Hello";  /* let it point to string */
x[1] = NULL;     /* let it point to nowhere */
x[2] = 0;        /* same thing as above */
x[3] = '\0';     /* bad, expects pointer to char not char */

答案 3 :(得分:0)

如果您有一个简单的char* foo变量,那么foo[0]将是char类型,因此您必须将其设置为\0(或0 )。

答案 4 :(得分:0)

我认为你的指针混乱了。

char* - string
char ** - address of that string or an array of strings depending on your data
char *** - address of an array of strings.

尝试重读你的作业,也许你有错误。

LE: 杰罗米在评论中提到了什么。

typedef struct{

char** some_data

}info;

char* info;

如果你想让一些char **为NULL,因为在你分配内存时,只需将你的info-&gt; some_data初始化为NULL。