今天的课是对数组的深入研究,分别为数组的定义初始化,数组的访问是用下标,下标第一位为0,数组元素在内存中的存储是连续的,并且由小到大(利用这个可以使用指针对数组进行访问),接下来讲了二维数组的初始化,二维数组的访问与存储与一维十分类似,可当做是特殊命名的一维数组。数组传参时传的是数组首元素的地址,不仅如此,再出现数组名是一般都是指其首元素的地址(除sizeof和&数组名)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//冒泡排序的写法
//void printff(int* str)
//{
// int a = strlen(str)-1;
// for (int i = 0; i <= a; i++)
// {
// printf("%d", str[i]);
// }
//}
void maopao(int* arr,int b)
{
//确定冒泡次数
int sz = b;
int a = 0,j=0;
int tmp;
//冒泡次数
for (a = 0; a <= sz -1; a++)
{
//每次冒泡要走的个数
for (j = 0; j <= sz - a-1; j++)
{
if (*(arr+j) > *(arr +j+ 1))
{
tmp = *(arr +j+ 1);
*(arr+j + 1) = *(arr+j);
*(arr+j) = tmp;
}
}
}
}
int main()
{
int arr[] = { 9,8,7,6,5,4,3,2,1 };
int a = (sizeof(arr) / sizeof(arr[0])) - 1;
maopao(arr,a);
//printff(arr);
return 0;
}
二维数组
//int main()
//{
// int arr[][4] = { {1,2,3},{1,2,3,4},{1,2,3,4} };
// for (int i = 0; i <= 2; i++)
// {
// for (int j = 0; j <= 3; j++)
// {
// printf("%d ", arr[i][j]);
// }
// printf("\n");
// }
// return 0;
//}
数组在传参时以指针的形式传,,还有就是strlen(str)
可为什么还能str[]访问数组:解释为从str开始向右偏移多少个位置进行访问
//void printff(int* str)
//{
// int a = strlen(str)-1;
// for (int i = 0; i <= a; i++)
// {
// printf("%d", str[i]);
// }
//}
//int main()
//{
// int arr[5] = {12435};
// printff(arr);
// return 0;
//}