学习C语言第八天记录

本文记录了C语言学习中的数组知识,包括一维数组、二维数组的创建和内存存储,以及数组在函数中的传参。还探讨了strlen和sizeof的区别,并通过示例展示了如何使用冒泡排序对数组进行升序排列。
摘要由CSDN通过智能技术生成

因为这两天有事情要处理,没有及时更新。
今天学习了数组的知识,一维数组和二维数组的创建以及使用和内存中怎样存储,最后学习了数组在函数中传参,具体看一下代码:
#include<stdio.h>
//int main() {
// //创建一个数组整型,存放十个整型数据
// int arr[10] = { 1,2,3 };//不完全初始化数组,剩下的默认为0
// char arr2[5] = { ‘a’,‘b’ };
// char arr3[5] = “ab”;
// char arr4[] = “abcdef”;
// printf("%d\n", sizeof(arr4));//求数组arr4所占空间的大小,7*1=7
// printf("%d\n", strlen(arr4));//求字符串的长度,\0结束标志,所以为6
// return 0;
//}
//1.strlen和sizeof没有关联
//2.strlen是用来求字符串长度,它只求字符串长度-库函数,要引用头文件
//3.sizeof计算变量、数组、类型的大小-单位是字节—操作符

//int main() {
// char arr[] = “abc”;
// char arr2[] = { ‘a’,‘b’,‘c’ };
// printf("%d\n", sizeof(arr));//4
// printf("%d\n", sizeof(arr2));//3
// printf("%d\n", strlen(arr));//3
// printf("%d\n", strlen(arr2));//随机
// return 0;
//}

//int main() {
// char arr1[] = “abcdef”;
// int len = strlen(arr1);
// int i = 0;
// for (i = 0; i < len; i++) {
// printf("%c “, arr1[i]);
// }
// int arr2[] = { 1,2,3,4,5,6,7,8,9,0 };
// int sz = sizeof(arr2) / sizeof(arr2[0]);
// int j = 0;
// for (j = 0; j < sz; j++) {
// printf(”%d ", arr2[j]);
// }
// 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 = 0; i < sz; i++) {
// printf("&arr[%d]=%p\n", i, &arr[i]);//数组在内存中存放的地址是连续的
// }
// return 0;
//}

//int main() {
// int arr[3][4] = { {1,2,3},{4,5} };//3行4列
// int i = 0;
// for (i = 0; i < 3; i++) {
// int j = 0;
// for (j = 0; j < 4; j++) {
// printf("%d “, arr[i][j]);
// }
// printf(”\n");
// }
// char arr2[4][5];
// int arr3[][4] = { {1,2,3,4},{5,6,7,8} };//行可以省略,列不行
// return 0;
//}

//int main() {
// int arr[3][4] = { {1,2,3},{4,5} };//3行4列
// int i = 0;
// for (i = 0; i < 3; i++) {
// int j = 0;
// for (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 = 0;
// //确认好多趟冒泡排序
// for (i = 0; i < sz-1; i++) {
// int flag = 0;//假设这一趟要排序的数据已经有序
// int j = 0;
// //每一趟冒泡排序
// for (j = 0; j < sz - 1 - i; j++) {
// if (arr[j]>arr[j+1]) {
// int tmp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = tmp;
// flag = 0;//本趟排序的数据不完全有序
// }
// }
// if (flag == 1) {
// break;
// }
// }
//}
//int main() {
// int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
// //对数组进行升序
// //冒泡排序–就是相邻的两个数据比较,不符合的就后移,一直比较完
// int sz = sizeof(arr) / sizeof(arr[0]);
// //数组在作为函数参数时,传递的是首元素的地址
// bubble_sort(arr,sz);
// int i = 0;
// for (i = 0; i < sz; i++) {
// printf("%d ", arr[i]);
// }
// return 0;
//}

//int main() {
// if (1)
// break;
//break只能用于循环和开关(switch)中使用
// return 0;
//}

int main() {
int arr[] = { 1,2,3,4,5,6,7 };
/int sz = sizeof(arr) / sizeof(arr[0]);/
//1.sizeof(数组名)-数组名表示整个数组,此时求的是整个数组名的大小,单位字节
//2.&数组名,数组名代表整个数组,&取出整个数组的地址
//除了这两种情况以外,数组名表示数组首元素的地址
printf("%p\n",arr);
printf("%p\n", arr + 1);

printf("%p\n", &arr[0] + 1);
printf("%p\n", &arr[0]);

printf("%p\n", &arr + 1);
printf("%p\n", &arr);
/*printf("%p\n", arr);
printf("%p\n", &arr[0]);
printf("%d\n", *arr);*/
return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值