整数数组 与 字符数组 辨析
来源:互联网 发布:aop面向切面编程 ios 编辑:程序博客网 时间:2024/05/17 23:19
main ()
{
int a[] = {1,2,3,4,5};
char b[] = "12345";
int length = sizeof(a)/sizeof(int);
printf("%d\n",length);
printf("%d\n",sizeof(a)); //整数数组末尾是无\0的
printf("%d\n",sizeof(b)); //字符数组默认末尾加 \0
}
运行结果:
5
20
6
Press any key to continue
第一 整型数组的存放,数组最后是不加'\0'的,字符串会自动加上,因此存放字符的时候数组的大小要比实际字符的多一个
第二 整型数组 每一个单元是4个字节的,字符串是一个一个字符存放的,每个字符占一个字节
strlen与sizeof的区别
(1)sizeof是一个操作符。
当它作用于:1. 类型或变量:返回该数据类型或变量的长度
2. 结构:返回整个结构的长度
3. char *p="123456789";
sizeof(p)=4,返回的是指针所占的内存空间
sizeof(*p)=1,返回的是第一个字符所占的内存空间
4. int a[10]="123456789";
sizeof(a)=40,等效于对其元素类型做sizeof操作的结果乘上数组元素的个数。
(2)strlen是一个函数。
strlen只能用char*做参数(数组名作为参数传递的是指针),且必须是以''\0''结尾的。
char a[6]={'1','a','\0','c'}; strlen(a)=2,返回的是字符串的有效长度。
char *p="12345"; strlen(p)=5.
字符数组
1 字符数组在定义的时候最好要初始化。
2 字符数组在初始化时,可以用2种形式。
第一种字符数组的初始化
- char a1[4]="abc";
第二种字符数组的初始化
- char a2[4]={'a','b','c','\0'};
3 字符串和字符串数组之间存在着转化。
上面的"abc"和{'a','b','c','\0'}可以经过相互转换后变得一样。在"abc"末尾,会自动附加上字符串结束符'\0',所以最后和{'a','b','c','\0'}是一样的。
4 如果给字符数组赋值,下面这样写是错误的,连编译都通不过。
- //字符串赋值的错误方法
- char a1[4]=“zzz”;
- a1="abc";
5 赋值的正确方式和初始化不同。也有2种方式。
第一种字符数组赋值的方式使用了库函数。
- //#include <string>
- strcpy(a1,"def");
第二种字符数组赋值的方式在循环中逐个元素进行。
- char a3[4]={'g','h','i','\0'}
- for(int i=0;i<3;i++) {
- a2[i]=a3[i];
- }
整型数组
1 整型数组在定义的时候最好要初始化。
2 整型数组在初始化时,一般有1种形式。
- int b1[4]={1,2,3,4};
3 如果给整型数组赋值,下面这样写是错误的,编译都通不过。
- //错误写法
- int b1[4]={1,2,3,4};
- b1[4]={4,3,2,1};
错误的原因是b1[4]代表数组的第4个元素而不是整个数组,b1[i]代表数组的第i个元素。数组名b也是一个指针,指向数组的首个元素。
4 给整形数组赋值,需要在循环中逐个元素进行,有1种形式。
- int b1[4]={1,2,3,4};
- for(int i=0;i<4;i++) {
- b1[i]=i*2;
- }
- 整数数组 与 字符数组 辨析
- 辨析指针数组与数组指针
- C语言中数组与指针辨析
- C语言中数组与指针辨析
- 【C语言】数组与指针的辨析
- 整数转换为字符数组
- 字符数组与字符串数组
- 1.10 数组与字符数组
- 字符数组与字符串数组
- C++数组与字符数组
- 辨析--数组,指针
- 数组和指针辨析
- 数组指针辨析
- 数组指针辨析答案
- 字符数组,指针与数组,动态数组
- 字符数组与字符串
- 字符数组与字符串(
- 字符串与字符数组
- WSASocket failed 10013 处理
- android自定义View
- nginx stub_status 监控模块
- 关于页面加载图片错位的思考
- java读XML到实体bean中
- 整数数组 与 字符数组 辨析
- PCM数据格式
- Angular 资料收录
- 举例说明协方差矩阵的运算
- 普通类获取spring上下文
- 简单工厂&工厂方法&抽象工厂
- 第一章 Introduction exercise 21-33
- HTML5的data-* 自定义属性
- Android省市县三级联动 真实项目抽出 调用只需3行代码 源码免积分下载