栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言-数组】看了《黑客与画家》(虽然没什么关联...

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言-数组】看了《黑客与画家》(虽然没什么关联...

想理解数组,也得对内存有一定理解

内存:储存器

了解几点:

  1. 编程的本质就是操控数据,而数据存放在内存中
  2. 为了更好利用内存,我们将内存分成了一个个内存单元
  3. 每个单元有自己的编号(地址/指针)


数组:一组同类型元素的集合, 也是一块连续的内存空间


int 类型的变量,每个占4个字节,可知:连续存放

1.创建&初始化&使用
  1. 创建
  • type_t (数据类型) arr_name(数组名) [const_n] (元素个数)
  • int arr [10];
  1. 初始化
  • int arr [3] = {1,2,3};
  • int arr[ ] = {1,2,3};//元素个数可省
  • int arr [10] = {1,2,3 (0,0,0,0,0,0,0) };//不完全初始化,剩下的元素默认初始化为0
  1. 使用
  • “ [ ] ” : 下标引用操作符

要注意的:

  • 数组的下标从 0 开始
  • 下标限制范围: 0 —— n-1(<0 || >n-1 就是越界访问)
2.遍历

用循环的方式将每个元素遍历出来:见上“连续存放”

3.数组作为函数参数

数组名的本质:数组首元素地址(两个例外)

  1. sizeof(数组名) —— 数组名这时表示整个数组,计算的是整个数组的大小
  2. &数组名 —— 数组名这时表示整个数组,取出的是整个数组的地址
  • 数组作实参时,形式为“arr”;数组做形参时,形式为“arr[ ]”
  • 传参时,形参有两种写法:1.数组 2.指针
//指针
//void bubble_sort(int* p_arr,int sz)
//数组
void bubble_sort(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz - 1; i++)
	{
		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;
			}
		}
	}
}
int main()
{
	int arr[10] = { 9,8,7,6,5,4,3,2,1 };
	//如果数组没有给定元素数量,可以如下计算
	int sz = sizeof(arr) / sizeof(arr[0]);
	bubble_sort(arr,sz);
	int i = 0;
	//又用到遍历
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
4.字符串&数组

C语言中没法直接定义字符串数据类型,但可以用数组定义

  • char str [ ] = “peigen”;
  • char str [ ] = {‘p’,‘e’,‘i’,‘g’,‘e’,‘n’,(‘’)}

注意:

  • 字符串的结束标志是’’,所以用第二种方法是要跟’’
  • printf(“%s”,str[i]);
5. 的“是非多”
  • sizeof(arr) —— 计算数组内所有元素的大小(包括’’)
  • srelen(arr) —— 计算字符串长度(到’’为止,不算’’)
6.多维数组

已知,数组在内存中连续存放
我们就能把二维数组甚至n维数组看成一维数组,或者说,二维数组是元素为一维数组的数组

  • 行可以省略,列不能省——编译器可以通过列,计算出行
  • 如int arr [ ] [4] = {1,2,3,4,7,8,9,0} ——2行4列

今天的分享就到这里,不足之处望请斧正


这里是培根的blog,一起进步!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849286.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号