首先还是关于这两个东西

  • sizeof() 用于计算所占空间大小
  • strlen() 只用于求字符串长度
/**
* sizeof 计算所占空间大小 \0也会计算
* strlen 只能用来求字符串长度 直到找到字符串结束标志\0
* */
char arr1[]={'a','b','c'}; // a b c
char arr2[]="abc"; // a b c \0
printf("%d\n",sizeof(arr1)); 3
printf("%d\n",sizeof(arr2)); 4
printf("%d\n",strlen(arr1)); //随机值 找不到字符串结束标志\0
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函数
关于字符之类的函数:

image

关于二维数组在内存中存放顺序 以行为主顺序存放

image

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

image

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

image

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]);
posted on   不爱美女爱辣条  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?



点击右上角即可分享
微信分享提示