Day05:C语言数组存储结构与字符串详解
一、数组的存储结构1. 数组变量的地址连续性数组中的元素在内存中地址是连续的。数组名非常重要涉及指针与内存操作。2. 数组名的含义数组名表示首元素的地址。示例int arr[5]; printf(%p\n, arr); // 输出首元素地址 printf(%p\n, arr[0]); // 等价3. 数组名的类型数组名有类型但它是地址类型如果元素是int数组名类型为int *如果元素是char数组名类型为char *4. 数组名的运算能力指针运算遵循元素类型大小int *类型 1 → 地址增加 4假设 int 4 字节char *类型 1 → 地址增加 1示例int arr[3]; printf(%p\n, arr 1); // 地址 sizeof(int)5. 数组名是否是变量不是变量是常量值表示首元素地址6. 取值运算符*arr→ 取首元素值arr[n]→*(arr n)访问第 n 个元素二、字符数组与字符串1. 字符数组存储char类型变量的数组可以用于存储字符串是C语言中唯一可存储字符串的数组类型2. 字符串String由 0 个或多个字符组成以\0结尾。空串示例char empty[] ;hello字符串一定有\0结尾即hello\03. 字符串常量与变量字符串常量例如hello存在程序只读区字符串变量在 C 中没有独立类型只能用字符数组实现4. 存储字符串的数组示例char str1[10] hello; // 正确可作为字符串使用 char str2[2] {h, i}; // 不是字符串变量没有 \0 char str3[2] hi; // ❌ 越界hi \0 需要 3 个空间5. 字符串操作5.1 长度长度不包含\0字符示例#include string.h char str[] hello; printf(%zu\n, strlen(str)); // 输出 55.2 复制#include string.h char src[] hello; char dest[10]; strcpy(dest, src);5.3 拼接#include string.h char str1[20] hello; char str2[] world; strcat(str1, str2); // str1 - helloworld5.4 比较依次比较字符 ASCII 值第一个不同字符决定大小#include string.h printf(%d\n, strcmp(hello, hi)); // 0hello hi printf(%d\n, strcmp(hello, hello)); // 0等于 printf(%d\n, strcmp(hello, helloa));// 0hello helloa 总结数组是连续内存存储数组名是首元素地址的常量字符数组是存储字符串的唯一方法字符串必须以\0结尾字符串操作包括长度、复制、拼接和比较字符串比较基于 ASCII 码长度和内容决定大小
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2518590.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!