1.打印一下二维数组
int main()
{
int arr[3][4] = { 1,2,3,4,7,8,5,3,0 };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
// printf("&arr[%d][%d]=%p\n", i, j, &arr[i][j]); 打印地址
}
printf("\n");
}
return 0;
}
2.数组作为函数参数:
实现一个冒泡排序函数将一个整型数组排序,那我们将会使用该函数
注:10个元素 9趟冒泡排序 第1趟冒泡排序需要比较9对 第二趟比较8对 ......
void bubble_sort(int*arr,int sz)
{
//确定冒泡排序的趟数
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int flag =1;//假设这一趟要排序的数据 已经有序
//每一趟冒泡排序 第一次有9对
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,11,4,4,2,1,0 };
//int arr[] = { 9,8,7,6,11,4,4,2,1,0 }; 已经有序
int sz = sizeof(arr) / sizeof(arr[0]);
//对arr进行排序 排成升序
//arr是数组 我们对数组传参 实际上传递过去的是arrd首元素的地址 &arr[0]
bubble_sort(arr,sz);//冒泡排序函数
for (int i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
//错误
int main()
{
if (1)
break; // err break 语句只能在循环或开关中使用
return 0;
}
3.数组名是什么:首元素的地址
int main()
{
int arr[] = { 1,2,3,4,5,6,7 };
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);
//int sz = sizeof(arr) / sizeof(arr[0]);
//1.sizeof(数组名)- 数组名表示整个数组 sizeof(数组名)计算的是整个数组的大小 单位是字节
//2.&数组名-取地址数组名--数组名代表整个数组 &数组名,取出的是整个数组的地址
//
//printf("%p\n", arr);
//printf("%p\n", &arr[0]);
//printf("%d\n", *arr);//1
//printf("%d\n", arr[0]);//1
//数组名是首元素的地址。(有两个例外)
return 0;
}