C语言数组与字符串初始化
2016-01-02 18:20
423 查看
面试的时候遇到的题,以解疑惑:
1、数组初始化
C语言中,如果定义数组时没有初始化,数组元素是否初始化分为:
若是函数体外定义的内置数组,则数组中的元素均自动初始化为零;
若是函数体内定义的内置数组,则其元素无初始化。
2、字符串初始化,看一下三种:
void main()
{
char a[]={'b','o','y'};
char b[]="boy";
char c[]={'b','o','y','\0'};
printf("a的长度是:%d\n",strlen(a));
printf("b的长度是:%d\n",strlen(b));
printf("c的长度是:%d\n",strlen(c));
}
运行结果是:
问题在于:
a 的 结尾没有 NULL 符号,编译器不知道会什么时候结束;
b 这样定义的时候会在字符串末尾自动加上 NULL 即 '\0';
c 这种是自己明确接上去的 结束符 '\0'
最近才发现以前学习的时候是有多疏忽,欢迎赐教
1、数组初始化
C语言中,如果定义数组时没有初始化,数组元素是否初始化分为:
若是函数体外定义的内置数组,则数组中的元素均自动初始化为零;
若是函数体内定义的内置数组,则其元素无初始化。
2、字符串初始化,看一下三种:
void main()
{
char a[]={'b','o','y'};
char b[]="boy";
char c[]={'b','o','y','\0'};
printf("a的长度是:%d\n",strlen(a));
printf("b的长度是:%d\n",strlen(b));
printf("c的长度是:%d\n",strlen(c));
}
运行结果是:
问题在于:
a 的 结尾没有 NULL 符号,编译器不知道会什么时候结束;
b 这样定义的时候会在字符串末尾自动加上 NULL 即 '\0';
c 这种是自己明确接上去的 结束符 '\0'
最近才发现以前学习的时候是有多疏忽,欢迎赐教
相关文章推荐
- 动态数组分配(C语言)
- MFC VC++6.0列表控件的使用
- C++对象在内存中的存储
- 黑马程序员-C语言-小知识点集
- C语言基础之内存分配
- 观察者模式
- C++中导致二义性错误
- C++命名空间
- C/C++数据对齐方式
- 黑马程序员-C语言-数组名作为函数参数
- 手把手教你学单片机--51单片机C语言开发
- Turbo C++ 3.0创建多文件项目的方法
- 利用C++11实现一个自动注册的工厂
- C++小题(八)
- 手把手教你学单片机--51单片机C语言开发
- C语言实现程序开机自启动
- C++中的const和constexpr详解
- c语言:模拟实现strstr库函数
- 关于C++的const
- C语言怎么获得进程的PE文件信息