c - 结构中空数组的 strlen() 不为 0

标签 c arrays struct

我是 C 的新手,我不理解这种行为。在打印这个空数组的长度时,我得到 3 而不是 0。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct entry entry;

struct entry{
   char arr[16];
};

int main(){
  entry a;
  printf("%d\n",strlen(a.arr));
  return 0;
}

我哪里不明白?

最佳答案

entry a; 语句没有初始化结构,因此它的值可能是垃圾。因此,无法保证其任何成员的 strlen 会返回任何合理的信息。事实上,它甚至可能使程序崩溃,或者 worse .

关于c - 结构中空数组的 strlen() 不为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36673377/

相关文章:

从 gcc 到 Visual Studio Express 2010 的 C 代码

c++ - 在 g++ 中编译 .c 假定 c++ 任何命令行选项都将其视为 .c

转换为多线程套接字应用程序

java - 以最佳方式计算 x 的 x 次方

java - 将输入数字与数组中的值进行比较

php - 在 CakePHP 中合并 2 个数组

c - 如何修改链表中的插入函数以适合所需的输出?

c - scanf 和 "\n"转义序列

javascript - 根据 json 数组值选择 html 复选框

struct - 从扩展中返回 CGPoint