C语言
数组学习
#include <stdio.h>
/*strlen 是求字符串长度的,只针对字符串求长度-库函数-得使用头文件
sizeof 计算变量,数组,数据类型的大小,单位是字节-操作符
int main(){
char arr1[10] = { 'h','e','l','l','o' };
char arr2[10] = "hello";
char arr3[] = "world";
int arr4[10] = { 1,2,3 };
printf("%d\n", sizeof(arr3));
//sizeof 计算arr3所占空间大小 总共六个元素 6*1=6;
printf("%d\n", strlen(arr3));
//strlen 计算arr3字符串的长度即求"\0"之前的字符串
return 0;
}
*/
/*int main() {
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
printf("%d\n", sizeof(arr1));
printf("%d\n", sizeof(arr2));
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
//会出现一个随机值,因为arr2在遇到"\0"的时候才会结束
//但是我们不能知道什么时候会遇到"\0",所以答案为4 3 3 15(15是个随机值)
return 0;
}*/
/*int main() {
int i=0;
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
int sz = sizeof(arr)/sizeof(arr[0]);
printf("%d\n", sz);
for (i; i < sz; i++) {
printf("%d ", arr[i]);
}
return 0;
}*/
/*int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for (i; i < sz; i++) {
printf("&arr[%d]=%p\n", i, &arr[i]);
}
}*/
/*int main() {
int arr[3][4] = { 1,2,3,4,5 };
int arr1[3][4] = { 1,2,3,4,5 };
int arr2[][4] = { {1,2,3,4},{5,6,7,8} };
int i, j;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}*/
/*int main() {
int arr[3][4] = { 1,2,3,4,5 };
int arr1[3][4] = { 1,2,3,4,5 };
int arr2[][4] = { {1,2,3,4},{5,6,7,8} };
int i, j;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("&arr[%d][%d]=%p\n ", i,j,&arr[i][j]);
}
}
return 0;
}*/
/*对数组元素进行冒泡排序*/
/*
void bubble_sort(int arr[], int sz) {
int i, j;
int temp = 0;
//需要多少趟冒泡排序
for (i = 0; i < sz-1; i++) {
int flag = 1;//假设已经有序
//每一趟需要多少对排序
for (j = 0; j <sz-1-i ; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = 0;//说明本趟排序并不完全有序
}
}
if (flag == 1) {
break;
}
}
}
int main() {
int arr[10] = { 10,9,8,7,6,5,4,3,2,1 };
int sz = sizeof(arr) / sizeof(arr[0]);
//arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址&arr[0]
bubble_sort(arr,sz);//冒泡排序函数
for (int i = 0; i < sz; i++) {
printf("%d\n", arr[i]);
}
return 0;
}*/
int main() {
int arr [6] = { 1,2,3,4,5,6 };
//sizeof(数组名)-数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节
//2.&数组名,数组名代表整个数组,&数组名,取出的是整个数组的地址
printf("%p\n", arr);//输出的地址是数组首元素的地址
printf("%p\n", arr+1);
printf("%p\n", &arr[0]);//输出的地址是数组首元素的地址
printf("%p\n", &arr[0] + 1);
printf("%p\n", &arr);//输出的地址是数组的地址
printf("%p\n", &arr + 1);
printf("%d\n", *arr);
return 0;
}