首先还是关于这两个东西
- 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函数
关于字符之类的函数:
关于二维数组在内存中存放顺序 以行为主顺序存放
输出为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]);
标签:39,数组,int,C语言,str,printf,sizeof,array
From: https://www.cnblogs.com/gaodiyuanjin/p/18168651