返回

数组的学习(1)

发布时间:2023-01-14 10:16:50 255
# 数据

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

//数组

//本章重点

//1.一维数组的创建与初始化

//2.一维数组的使用

//3.一维数组在内存中的储存

//4.二维数组的创建与初始化

//5.二维数组的使用

//6.二维数组在内存中的储存

//7.数组作为函数参数

//8.数组的应用实例1:三子棋

//9.数组的应用实例2:扫雷游戏

 

 

//             1.一维数组的创建与初始化

// 数组的创建

// 数组是一组相同类型元素的集合。数组的创建方式:

// type_t   arr_name  [const_n];

//    //type_t 是指数组的元素类型

//   //const_n 是一个常量表达式,用来指定数组的大小

//数组创建,[]中要给一个常量才可以,不能使用变量

//

//int main()

//{

// //创建一个数组-存放整型-10个

// int arr[10];

// char arr2[5];

// int arr3[count];//错误的创建方式

// return 0;

//}

//注意:数组创建,[]中要给一个常量才可以,不能使用变量。

 

 

//数组的初始化

//数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。

 

//int main()

//{

// //int arr[10] = { 1,2,3,4 };//不完全初始化,剩下的元素默认初始化为0。

// char arr2[] = "abcdef";//七个元素   \0也算一个

// //sizeof是计算arr2所占空间的大小

// //7个元素-char 7*1 = 7

// printf("%d\n", sizeof(arr2));//7

//

// //strlen 求字符串的长度

// //[a,b,c,d,e,f,\0]

// // 6

// //到\0结束

// printf("%d\n", strlen(arr2));//6

// return 0;

//}

/*1.strlen 和sizeof没有什么关联

2.strlen是求字符串长度-只能针对字符串求长度-strlen是库函数-使用得引头文件

3.sizeof是计算变量、数组、类型的大小-单位是字节-sizeof是操作符*/

 

//int main()

//{

// char arr1[] = "abc";

// char arr2[] = { 'a','b','c' };

// printf("%d\n", sizeof(arr1));//4

// printf("%d\n", sizeof(arr2));//3

// printf("%d\n", strlen(arr1));//3

// printf("%d\n", strlen(arr2));//42-随机值-strlen只能针对字符串求长度

// return 0;

//}

 

 

 

 

//                    2.一维数组的使用

//int main()

//{

// char arr[] = "abcdef";//[a],[b],[c],[d],[e],[f],[\0],

// //printf("%c\n", arr[3]);

// int i = 0;

// int len = strlen(arr);

// for (i < 0; i < len; i++)

// {

//  printf("%c ", arr[i]);

// }

// return 0;

//}

 

 

//                    3.一维数组在内存中的储存

//一维数组在内存中是连续存放的。

//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;

//}

 

 

//                    4.二维数组的创建与初始化

//二维数组的创建

//int main()

//{

// int arr[3][4];//表示三行四列的二维数组

// char ch[5][6];//表示五行六列的二维数组

// return 0;

//}

 

//二维数组的初始化

//注意:行能省略,列不能省略!

//int main()

//{

// int arr[3][4] = { {1,2,3},{4,5} };//其实跟一维数组差不多

// int arr1[][4] = {{1,2,3,4},{5,6,7,8}}//行能省略,列不能省略。

// return 0;

//}

 

//                     5.二维数组的使用

//行和列的访问都是从0开始的!

//int main()

//{

// int arr[3][4] = { {1,2,3},{4,5} };

// //1 2 3 0

// //4 5 0 0

// //0 0 0 0

// 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");

// }

// return 0;

//}

 

 

//                         6.二维数组在内存中的储存

//二维数组在内存中也是连续存放的。

//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("&arr[%d][%d] = %p\n",i,j, &arr[i][j]);

//  }

// }

// return 0;

//}

 

 

//                       7.数组作为函数参数

//往往我们在写代码的时候,会将数组作为参数传个函数,比如:

//我要实现一个冒泡排序(这里要将算法思想)函数将一个整形数组排序。

//那我们将会这样使用该函数:

 

 

//冒泡排序-两两相邻数字进行比较

 

//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++)

//  {

//   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;//这个break是在for循环里使用的,循环在外层。

//  }

// }

//}

//break 语句只用于for和switch,在if语句中不能使用,

//因为if不是循环语句,所以不能用break来结束。

//int main()

//{

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

// int i = 0;

// int sz = sizeof(arr) / sizeof(arr[0]);

// //对arr进行排序,排成升序

// //arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址&arr[0]

// bubble_sort(arr, sz);//冒泡排序函数

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

// {

//  printf("%d ", arr[i]);

// }

// return 0;

//}

 

 

//数组名是什么?

//int main()

//{

// int arr[] = { 1,2,3,4,5,6,7 };

// printf("%p\n", arr);

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

// printf("%d\n", *arr);

// return 0;

//}

 

//结论:

//     数组名是数组首元素的地址(有两个例外)

//1.sizeof(数组名)-数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节

//2.&数组名,数组名代表整个数组,&数组名,取出的是整个数组的地址。

 

//1.sizeof(数组名)-数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节

//int main()

//{

// int arr[] = { 1,2,3,4,5,6,7 };

// int sz = sizeof(arr) / sizeof(arr[0]);

// //1.sizeof(数组名)-数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节

// return 0;

//}

 

//2.&数组名,数组名代表整个数组,&数组名,取出的是整个数组的地址。

//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);

// return 0;

//}

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
函数与递归 2023-01-14 09:49:45