首先还是关于这两个东西
- sizeof() 用于计算所占空间大小
- strlen() 只用于求字符串长度
| |
| |
| |
| |
| char arr1[]={'a','b','c'}; |
| char arr2[]="abc"; |
| printf("%d\n",sizeof(arr1)); 3 |
| printf("%d\n",sizeof(arr2)); 4 |
| printf("%d\n",strlen(arr1)); |
| printf("%d\n",strlen(arr2)); 3 |
数组长度计算:
一维数组数= sizeof(array)/sizeof(array[0]);
二维数组行数 = sizeof(array)/sizeof(array[0]);
二维数组列数 = sizeof(array[0])/sizeof(array[0][0]);
数组下标从0开始
关于二维数组[][]第二个列不能省略
| int arr3[]={1,2,3,4}; |
| //取出的是首元素的sizeof(地址) |
| printf("%p\n",arr3); |
| printf("%p\n",&arr3[0]); |
| //取出的是整个数组的地址 |
| printf("%p\n",&arr3); |
还有一些练习题:
数组的下标
必须是整形常量表达式
注意注意:
其包含的元素不能超过其下标
| 是正确的 |
| #define M 8 |
| int a[M] |
| 错误: |
| int M=8; |
| int a[M]; |
| 关于两个字符串比较不能使用关系运算符 |
| 要使用strcmp函数 |
| 关于字符之类的函数: |


| 输出为9 |
| a b \n \\ 0 1 2 2 \\ \0结束标志 |
| char s[] = "ab\n\\0122\\\0"; |
| printf("%d", strlen(s)); |

| china直接复制到str数组里面 输出5 |
| char str[] = "String"; |
| printf("%d\n", strlen( strcpy(str, "China"))); |

| char str[10]="12345"; |
| 读取覆盖原来的数组内容 |
| gets(str); |
| strcat(str,"def"); |
| printf("%s",str); |
| 注意注意for循环的对其两层互不影响 |
| \t 缩进相当于Tab键 |
| int a[10] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; |
| for (int i = 0; i < 10; ++i) |
| a[i] = add(a[i], i); |
| for (int i = 0; i < 10; ++i) |
| printf("%d\t", a[i]); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?