前言:
在校大一学生,想用最简单的话来解释晦涩难懂的知识,让学习编程不再枯燥,这是我开始写博客的第三天,很多东西也是需要我学习的,请诸路大神予以指正,蟹蟹
1.一维数组:
数组的定义: 数组是一组相同类型元素的集合
a.一维数组的创建:
数组的创建格式为: 数组的类型 数组名[ 常量表达式 ] ;
关于数组创建易错点:
b.一维数组的初始化:
类似于给整型变量初始化的过程:
int a=2; int b=5; int c=66;
关于数组初始化易错点:
字符串的结束标志是 \0
特别注意:数组长度和字符串长度不是一个东西
1. #include <stdio.h> 2. #include <string.h> 3. 4. int main() 5. { 6. int arr1[3] = { 1,2,3 }; 7. //数组有1、2、3这三个元素 8. 9. int arr2[4] = { 1,2,3 }; 10. //数组有1、2、3、0这四个元素 11. 12. int arr3[4] = { 0 }; 13. //数组有0、0、0、0这四个元素 14. 15. char ch4[5] = "dat"; 16. //数组有d、a、t、\0、0这五个元素 17. 18. char ch5[] = "dat"; 19. //数组有d、a、t、\0这四个元素 20. 21. char arr6[] = "abc"; 22. //数组有a、b、c、\0四个元素,该数组长度为3,字符串长度为3 23. 24. char arr7[] = {'a','b','c'}; 25. //数组有a、b、c三个元素,该数组长度为3,字符串长度为随机值 26. 27. printf("%d\n", strlen(arr6));//3 28. printf("%d\n", strlen(arr7));//随机值 29. 30. printf("%s\n", arr6);//得abc 31. printf("%s\n", arr7);//abc乱七八糟 32. 33. 34. return 0; 35. }
c.一维数组的使用:
访问数组中的某个元素用到[ ]下标引用操作符,
数组是使用下标来访问的,下标是从0开始
计算数组的大小如下代码:
1. #include <stdio.h> 2. int main() 3. { 4. int arr[10] = {0}; 5. int sz = sizeof(arr) / sizeof(arr[0]); 6. printf("则数组的大小为%d\n",sz); 7. return 0; 8. }
d.一维数组在内存中的存储:
一维数组在内存中连续存放
数组的存放地址由低到高变化,看代码:
2.二维数组
一维数组长这样:int arr [ 10 ] = { 0 } ;
二维数组长这样:int arr [ 3 ] [ 4 ] = { {1,2} , {3,4} } ;
a.二维数组的创建:
int arr1 [ 3 ] [ 4 ] ; 三行四列
char arr2 [ 4 ] [ 4 ] ; 四行四列
float arr3 [ 3 ] [ 6 ] ; 三行六列
特别注意:二维数组中,行可以省略,如:int arr [ ] [ 4 ] ;
b.二维数组的初始化:
int arr1 [ 3 ] [ 4 ] = {1,2,3,4,5};
第一行: 1 2 3 4
第二行: 5 0 0 0
第三行: 0 0 0 0
char arr2 [ 4 ] [ 4 ] ={ {1,2} , {3,4} } ;
第一行: 1 2 0 0
第二行: 3 4 0 0
第三行: 0 0 0 0
第四行: 0 0 0 0
float arr3 [ 3 ] [ 6 ] = { {1,2} , {3,4} , {5,6,0,2} } ;
第一行: 1 2 0 0 0 0
第二行: 3 4 0 0 0 0
第三行: 5 6 0 2 0 0
特别注意:未完全初始化的部分都是0
c.二维数组的使用:
和一维数组相同,二维数组的使用也是通过下标的方式实现,
行和列的顺序,以及下标的的顺序不能错哦
d.二维数组在内存中的存储:
通过下图,我们发现:
二维数组在内存中也是连续存储的
数组的存放地址也是由低到高变化
3.数组越界 :
数组的下标是有限制的
规定:数组下标从0开始,最后一个元素下标为n-1
看以下代码:
若i=3;则有0 1 2 3 四个下标就有四个元素,
若j=4;则有0 1 2 3 4 五个下标就有五个元素
4.数组作为函数参数 :
这里用个冒泡函数:将元素排序,来举例
这个代码通过调试,才能得出效果
1. #include <stdio.h> 2. 3. void bubble_sort(int arr[], int sz) 4. { 5. int i = 0; 6. for (i = 0; i < sz - 1; i++) 7. { 8. int j = 0; 9. for (j = 0; j < sz - i - 1; j++) 10. { 11. if (arr[j] > arr[i]) 12. { 13. int tmp = arr[j]; 14. arr[j] = arr[j + 1]; 15. arr[j + 1] = tmp; 16. } 17. 18. } 19. } 20. 21. } 22. int main() 23. { 24. int arr[] = { 1,3,6,8,2,9 }; 25. int sz = sizeof(arr) / sizeof(arr[0]); 26. bubble_sort(arr, sz); 27. 28. return 0; 29. }
5.数组名:
6
数组名就是首元素的地址(俩个例外):
1.sizeof(数组名)计算的是数组的大小
2.&数组名,取出的是数组的地址
6.做好一件事,最重要的就是 重复 和 坚持
必行之事,何必问天,一定要加油鸭
如果对您有帮助的话,不要忘记点赞哦,蟹蟹