c——复合类型——字符串
来源:互联网 发布:Sql中not in的效率 编辑:程序博客网 时间:2024/04/30 02:28
字符串
void arr_str(){ char animal1[] = "horse"; char animal2[] = "horse\0"; char animal3[] = "horse\0donkey"; char animal4[] = {"horse"}; printf("sizeof(animal1) = %lu, last char = %d\n", sizeof(animal1), animal1[sizeof(animal1) - 1]); printf("sizeof(animal2) = %lu, last char = %d\n", sizeof(animal2), animal2[sizeof(animal2) - 1]); printf("sizeof(animal3) = %lu, last char = %d\n", sizeof(animal3), animal3[sizeof(animal3) - 1]); printf("sizeof(animal4) = %lu, last char = %d\n", sizeof(animal4), animal4[sizeof(animal4) - 1]); char* pAnimal1 = "horse"; char* pAnimal2 = "horse\0"; char* pAnimal3 = "horse\0donkey"; printf("sizeof(animal1) = %ld, pAnimal1 = %p, &animal1 = %p\n", sizeof("horse"), pAnimal1, &"horse"); printf("sizeof(animal2) = %ld, pAnimal2 = %p, &animal2 = %p\n", sizeof("horse\0"), pAnimal2, &"horse\0"); printf("sizeof(animal3) = %ld, pAnimal3 = %p, &animal3 = %p\n", sizeof("horse\0donkey"), pAnimal3, &"horse\0donkey"); printf("strlen(animal1) = %lu\n", strlen(animal1)); printf("strlen(animal2) = %lu\n", strlen(animal2)); printf("strlen(animal3) = %lu\n", strlen(animal3)); printf("strlen(pAnimal1) = %lu\n", strlen(pAnimal1)); printf("strlen(pAnimal2) = %lu\n", strlen(pAnimal2)); printf("strlen(pAnimal3) = %lu\n", strlen(pAnimal3));}
output:
sizeof(animal1) = 6, last char = 0sizeof(animal2) = 7, last char = 0sizeof(animal3) = 13, last char = 0sizeof(animal4) = 6, last char = 0sizeof(animal1) = 6, pAnimal1 = 0x100000e72, &animal1 = 0x100000e72sizeof(animal2) = 7, pAnimal2 = 0x100000fa4, &animal2 = 0x100000fa4sizeof(animal3) = 13, pAnimal3 = 0x100000fab, &animal3 = 0x100000fabstrlen(animal1) = 5strlen(animal2) = 5strlen(animal3) = 5strlen(pAnimal1) = 5strlen(pAnimal2) = 5strlen(pAnimal3) = 5
结论:
- 字符串本质是匿名字符数组,只不过末尾会追加一个空字符‘\0’作为字符串结束标志,即last数组元素为空字符‘\0’
- 可用字符串初始化字符数组
- 字符串赋值给字符指针本质是把匿名字符数组赋值给字符指针,数组作为操作数时隐式转换为数组元素类型指针,即char*,指向数组第一个元素
- 字符串函数处理字符数组或字符串时(字符串参数为char*或const char*类型),遇第一个空字符‘\0’结束,不再处理之后字符
注:wchar_t同理,wchar_t类型空字符为L'\0'
0 0
- c——复合类型——字符串
- 学习C++——复合类型
- 复合类型 —— 引用
- 复合类型 —— 指针
- c——复合类型——指针
- c——复合类型——数组
- c——复合类型——函数
- c——隐式转换——复合类型
- c——运算符——复合类型
- C语言学习笔记(五)——复合类型
- 第4章——复合类型
- 结构——复合值类型
- 枚举——复合值类型
- 复合类型——引用、指针
- 复合类型——指针和引用
- Go基础编程:复合类型—指针
- Go基础编程:复合类型—数组
- Go基础编程:复合类型—map
- Maven精华文章收录
- Three.JS学习 5:了解相机
- linux-shell命令之rm(remove)【删除文件或目录】
- GMssl -- 1
- 【Unity&NGUI】背包系统显示隐藏问题
- c——复合类型——字符串
- 朴素贝叶斯
- 关于HTTP协议,一篇就够了
- 二分法求根
- Android Studio目录结构浅析
- Weka算法Classifier-trees-RandomTree源码分析
- python 2-3 如何统计序列中元素的出现频度--collections.Counter
- libigl Mesh处理库
- linux-shell命令之mkdir(make dir)【创建目录】