假设我的char* elem
应该包含char**
,elem[0] = char**
,elem[1...m]= <more chars>
。有没有办法可以在char* elem
内放置一个空ptr?当我尝试设置elem = NULL
时,它会给我一个类型错误,因为NULL是一个int。
非常感谢任何帮助!
答案 0 :(得分:1)
如果您要查找二进制0,请尝试'\ 0'
这是在字符串末尾的空终止(char *)
答案 1 :(得分:1)
char*
指向char
,而不是char*
。除非您的体系结构具有8位地址或者您的字符比8位宽,否则您无法将指针塞入字符。
答案 2 :(得分:1)
问题不是NULL
与0
,它们是相同的并且意味着空指针,这是一个与算术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。