首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我完成这项任务时到底发生了什么?

当我完成这项任务时到底发生了什么?
EN

Stack Overflow用户
提问于 2018-10-20 20:31:56
回答 4查看 76关注 0票数 0

考虑下面的代码片段

代码语言:javascript
复制
char a[]="";

是否将NULL-pointer分配给字符指针*a

如果不是,我如何检查no字符串是否已分配给a

EN

回答 4

Stack Overflow用户

发布于 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。

要测试此操作,请执行以下操作

代码语言:javascript
复制
#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.");
  }
}
票数 1
EN

Stack Overflow用户

发布于 2018-10-20 20:33:29

a将包含一个元素:

代码语言:javascript
复制
a[0] == '\0'

注意:a不是指针。

票数 0
EN

Stack Overflow用户

发布于 2018-10-20 20:33:53

首先,a不是一个字符指针,它是一个char数组。在某些情况下,后者被转换为前者,但它们本质上不是同一类型。

也就是说,在这个初始化中,数组a将被初始化为一个空字符串。

空字符串意味着,第一个元素将是终止空字符,因此检查数组是否包含空字符串的最简单方法是将第一个元素与null进行比较,例如

代码语言:javascript
复制
 if (a[0] == '\0') {  /*do the action*/ }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52905676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档