考虑下面的代码片段
char a[]="";是否将NULL-pointer分配给字符指针*a
如果不是,我如何检查no字符串是否已分配给a
发布于 2018-10-20 20:37:11
是否会将空指针分配给字符指针*a?
There‘s no character here,但 an a of d11>.
a将被定义为一个char数组,并被初始化为包含一个空字符串,即仅带有0-terminator的c字符串,这是一个char。
如何检查no字符串是否已分配给?
所以a将只有一个元素。此元素将等于'\0',而后者又将等于0。
要测试此操作,请执行以下操作
#include <stdio.h> /* for puts() */
#include <string.h> /* for strlen() */
int main(void)
{
char a[] = ""; /* The same as: char a[1] = ""; */
/* Possibility 1: */
if (0 == a[0]) /* alternatively use '\0' == a[0] */
{
puts("a is an empty string.");
}
/* Possibility 2: */
if (0 == strlen(a))
{
puts("a has length zero.");
}
}发布于 2018-10-20 20:33:29
a将包含一个元素:
a[0] == '\0'注意:a不是指针。
发布于 2018-10-20 20:33:53
首先,a不是一个字符指针,它是一个char数组。在某些情况下,后者被转换为前者,但它们本质上不是同一类型。
也就是说,在这个初始化中,数组a将被初始化为一个空字符串。
空字符串意味着,第一个元素将是终止空字符,因此检查数组是否包含空字符串的最简单方法是将第一个元素与null进行比较,例如
if (a[0] == '\0') { /*do the action*/ }https://stackoverflow.com/questions/52905676
复制相似问题