数组
一维数组的创建
创建的方式
#include<stdio.h>
int main() {
//创建数组的方式
int arr1[] = { 1,2,3,4,5 };
char arr2[5] = {'a',98};
char arr3[5] = "abs";
return 0;
}
注意点:
1.错误的创建方式
int n = 5;
int arr [n]
注意!这么创建是错误的!!!
arr []括号内部放的必须是一个常量,而这里的 n 是变量,有常量的属性,但是不能够这么创建,因为本质上还是个变量
2.strlen 和 sizeof 的 理解
#include<stdio.h>
#include<string.h>
int main() {
//创建数组的方式
int arr1[] = { 1,2,3,4,5 };
char arr2[5] = {'a',98};
char arr3[ ] = "abs";
printf("%d\n", sizeof(arr2));//注意这里是5,因为数组指定了长度
printf("%d\n", sizeof(arr3));//这里长度是4,因为除了abs还有个'\0'
printf("%d\n", strlen(arr3));//这里长度是3,'\0'不算实际长度
char arr3[] = "abc";
char arr4[] = {'a','b','c'};
printf("%d\n", sizeof(arr3));//4 [abc\0]
printf("%d\n", sizeof(arr4));//3 [abc]
printf("%d\n", strlen(arr3));//3
printf("%d\n", strlen(arr4));//随机值
return 0;
}
strlen求出的是\0前面的字符总数
二维数组的创建
#include<stdio.h>
#include<string.h>
int main() {
//创建数组的方式
int arr[3][4] = { 1,2,3,4 };//方式1
int i,j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("arr[%d][%d]=%d\n", i, j, arr[i][j]);
}
}
/*arr[0][0] = 1
arr[0][1] = 2
arr[0][2] = 3
arr[0][3] = 4
arr[1][0] = 0
arr[1][1] = 0
arr[1][2] = 0
arr[1][3] = 0
arr[2][0] = 0
arr[2][1] = 0
arr[2][2] = 0
arr[2][3] = 0*/
int arr1[3][4] = { {1,2},{4,5}};//方式2
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("arr1[%d][%d]=%d\n", i, j, arr1[i][j]);
}
}
/*arr1[0][0]=1
arr1[0][1]=2
arr1[0][2]=0
arr1[0][3]=0
arr1[1][0]=4
arr1[1][1]=5
arr1[1][2]=0
arr1[1][3]=0
arr1[2][0]=0
arr1[2][1]=0
arr1[2][2]=0
arr1[2][3]=0
*/
int arr2[][4] = { {2,3},{4,5} };//方式3
return 0;
记得方式3中纵列一定要有值!横列可以有可以没有
经典二维数组
冒泡排序
#include<stdio.h>
#include<string.h>
void bubble_sort(int* arr, int len);
int main() {
int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
int i;
int len = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr,len);
for (i = 0; i < len; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
void bubble_sort(int* arr, int len) {
int i, j, temp;
for (i = 0; i < len; i++) {
for (j = 0; j < len - 1- i; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}