c语言中指针访问数组、一维数组传参的本质(首地址)、冒泡排序函数

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//使⽤指针访问数组

//打印一个数组,输入什么值就打印什么值

//int main()

//{

// int arr10 = { 0 };

// int i = 0;

// int* p = arr;

// int sz = sizeof(arr) / sizeof(arr0);

// for (i = 0; i < sz; i++)

// {

// //scanf("%d", p + i);//输入

// //scanf("%d", &arri);//输入

// scanf("%d", arr+i);//输入

// }

// for (i = 0; i < sz; i++)

// {

// //printf("%d ", *(p + i));//输出

// //printf("%d ", arri);//输出

// printf("%d ", *(arr+i));//输出结果一样

// }//总结:p+i == &arri == arr+i;

// //*(p+1) == arr ==*(arr+i)

// return 0;

//}

//⼀维数组传参的本质

//void test(int arr10)

//{

// int sz2 = sizeof(arr) / sizeof(arr0);

// printf("sz2 = %d\n", sz2);//在x64环境运行为2;在x86环境运行为1

//}//总结:传参int arr10看似是一个数组,其实是int* arr也就是数组首地址

////所以在x64环境运行为一个地址所占字符为8;所以在86环境运行为一个地址所占字符为4

//int main()

//{

// int arr10 = { 1,2,3,4,5,6,7,8,9,10 };

// int sz1 = sizeof(arr) / sizeof(arr0);

// printf("sz1 = %d\n", sz1);//10

// test(arr);//传的就是数组元素首地址

// return 0;

//}

//冒泡排序

void bubble_sort(int arr\[\], int sz)

{

int i = 0;

int cound = 0;

//循环多少趟

for (i = 0; i < sz - 1; i++)

{

int j = 0;

int flag = 1;//假设不用交换了

//交换

for (j = 0; j < sz-1-i; j++)

{

cound++;

if (arrj > arrj + 1)

{

int z = 0;

z = arrj;

arrj = arrj + 1;

arrj + 1 = z;

flag = 0;

}

if (flag == 1)

{

break;

}

}

}

printf("%d\n", cound);//第一行数组输出为:45次

//第二行数组输出为:17次(9+8)

}

void print_arr(int arr\[\], int sz)

{

int i = 0;

for (i = 0; i < sz; i++)

{

printf("%d ", arri);

}

}

int main()

{

//int arr10 = { 9,8,7,6,5,4,3,2,1,0};

int arr10 = { 9,0,1,2,3,4,5,6,7,8};

int sz = sizeof(arr) / sizeof(arr0);

bubble_sort(arr, sz);

print_arr(arr, sz);

return 0;

}