列定义的时候不能省略
二维数组在内存中是连续空间
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main(){
int arr[3][4] = { {1,2,3}, {4,5} };
int i = 0;
for ( i = 0; i < 3; i++)
{
int j = 0;
for ( j = 0; j < 4; j++)
{
//printf("%d ", arr[i][j]);
printf("&arr[%d][%d]=%p ",i,j,&arr[i][j]);
}
printf("\n");
}
return 0;
}
冒泡排序
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void bubble_sort(int arr[],int sz){
//确定冒泡排序趟数
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int flag = 1;//假设这一趟已经有序
//每一趟冒泡排序
int j = 0;
for (j = 0; j < sz - 1 - i; j++)//这里控制循环条件变化可以通过外面的循环改变了i
{
if (arr[j]>arr[j + 1]){
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
//发现本趟不有序
flag = 0;
}
}
if (1 == flag){
break;
}
}
}
int main(){
int i = 0;
int arr[] = { 2, 0, 1, 3, 5, 4, 3, 8, 10, 7, 7, 9 };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr,sz);
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
取数组地址的几个需要注意的地方
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main(){
int arr[] = { 2, 0, 1, 3, 5, 4, 3, 8, 10, 7, 7, 9 };
int sz = sizeof(arr) / sizeof(arr[0]);//sizeof(数组名)代表整个数组地址,计算整个数组大小,单位是字节。A
printf("%p\n", arr);//首元素地址
printf("%p\n", arr+1);//地址增加4
printf("%p\n", &arr[0]);//首元素地址
printf("%p\n", &arr[0]+1);//地址增加4
printf("%p\n", &arr);//取得是数组地址
printf("%p\n", &arr + 1);//地址增加了48=12个元素*4,它是整个数组地址移位。B
//除了&arr和sizeof(arr)两种情况其余都是取数组首元素地址
return 0;
}