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

C语言数组详解

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

C语言数组详解

目录

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

1.1 数组的创建

1.2 数组的初始化

1.3 一维数组的使用

1.4 一维数组在内存中的存储

1.5字符数组

2. 二维数组的创建和初始化

2.1 二维数组的创建

2.2 二维数组的初始化

2.3 二维数组的使用

2.4 二维数组在内存中的存储


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

1.1 数组的创建 数组是一组相同类型元素的集合。也就是一组数。 数组的创建方式: 类型说明符  数组名 [ 常量表达式];例:int n = 8; int arr[n]; 是错误的。
char arr3[10];   //char是指数组的元素类型;10是一个常量表达式,用来指定数组的大小                     
float arr4[5];   //float是指数组的元素类型;5是一个常量表达式,用来指定数组的大小 
double arr5[20]; //...

1.2 数组的初始化
int arr1[10] = {1,2,3};//不完全初始化,其余内容默认初始化为零;
int arr8[10] = {8};    //数组存储的内容为 1,0,0,0,0,0,0,0
int arr2[] = {1,2,3,4};  //arr2与arr3其实是一样的。当数组内容确定时,一维数组[]内可不写。
int arr3[4] = {1,2,3,4};//完全初始化;
char arr4[3] = {'a',98, 'c'};
char arr5[] = {'a','b','c'};  //字符数组初始化;
char arr6[] = "abcdef";       //字符串数组初始化;

当数组创建后,系统会为该数组在内存中开辟一串连续的存储单元。

1.3 一维数组的使用

数组创建时arr[] 方括号中要为常量表达式,当访问时方括号中可以为变量;

int arr [ 10 ] = { 1 } ; 

[] ,下标引用操作符。它其实就数组访问的操作符。

每个数组的第一个元素都下标总是0,这也称数组下标的下界,所以上述的数组的最后一个元素下标应该是9,这也称为数组下标的上界。

#include 
int main()
{
 int arr1[10] = {0};//数组的不完全初始化
    //整个数组的大小除以一个元素的大小等于数组元素个数。
    int sz = sizeof(arr1)/sizeof(arr1[0]);  
 //对数组内容赋值,数组是使用下标来访问的,下标从0开始。所以:
 int i = 0;//做下标
 for(i=0; i 
  

1.4 一维数组在内存中的存储
#include 

int main()
{
 int arr[10] = {0};
 int i = 0;
    int sz = sizeof(arr)/sizeof(arr[0]);
                           //整个数组的大小除以一个元素的大小等于数组元素个数。
 for(i=0; i 
  

 每个元素的类型为int(4个字节),刚好每个元素的地址也是相差4个字节。

结论:

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

2.随着数组下标的增长,地址是由低到高变化的。

1.5字符数组

1.字符数组就是数组中每个元素都是字符。

2.对字符数组初始化,可逐个元素地赋值,把字符逐个赋给数组元素。如果花括号中提供的初值个数(字符个数)大于数组长度,则编译时会按语法错误处理。如果初值个数(字符个数),则将这些字符赋给数组中前面那些元素,其余的元素定为空字符(‘’)。

char ch3[5] = "hep";   //  'h'  'e'  'p'  ''  ''

char ch4[] = "hep";   // 'h'  'e'  'p'  ''

#include
#include
int main()
{
	char ch5[] = "hello"; // 'h','e','l','l','o' ''字符串的结束标志位''
	char ch6[] = { 'h','e','l','l','o' }; // 'h','e','l','l','o' 
	printf("%sn", ch5); 
	printf("%sn", ch6);//当遇到时才会停止。

    printf("%dn",strlen(ch5)); //strlen:计算字符串长度。头文件为 #include
    printf("%dn",strlen(ch6)); //当遇到才会停止,ch6中无,所以当它往后读取到才停止
                                //所以为随机值。
	return 0;
}

2. 二维数组的创建和初始化

2.1 二维数组的创建

一般形式:类型说明符 数组名 [常量表达式] [ 常量表达式]

//数组创建
int arr1[3][5]; //3*5(3行5列)的数组
char arr2[3][2];
double arr3[2][3];

2.2 二维数组的初始化

1.全部初值放在一对花括号中,每一行的初值又分别在一对花括号中,之间用逗号隔开;

2.当某行一对花括号内的初值个数少于该行中元式个数时,系统将自动地给后面的元素补初值0;

3.不能跳过每行前面的元素而给后面的元素赋初值。

4.对于二维数组,只可以省略第一个方括号中的常量表达式,不能省略第二个方括号中的常量表达式。即可以省略行,不能省略列(至于为什么不能省略在2.4中有讲解)

//数组初始化
int arr1[3][4] = {1,2,3,4};//{1,2,3,4,0,0,0,0,0,0,0,0}
int arr2[3][4] = {{1,2},{4,5}};//{{1,2,0,0},{4,5,0,0},{0,0,0,0}}
int arr3[][4] = {{2,3},{4,5}}; //{{2,3,0,0},{4,5,0,0}}

2.3 二维数组的使用 二维数组的使用也是通过下标的方式。
#include 
int main()
{
	int arr[3][4] = { 1,2,3,4 };
	int i = 0;

	for (i = 0; i < 3; i++)
	{

		int j = 0;
		for (j = 0; j < 4; j++)
		{
			printf("%d ", arr[i][j]);
		}

	}
	return 0;
}

2.4 二维数组在内存中的存储
#include 
int main()
{
 int arr[3][4];
 int i = 0;
 for(i=0; i<3; i++)
 {
 int j = 0;
 for(j=0; j<4; j++)
 {
 printf("&arr[%d][%d] = %pn", i, j,&arr[i][j]);
 }
 }
 return 0;
}

二维数组在内存中也是连续存储的

二维数组中列确定一行有几个元素;因为二维数组在内存中是连续存放的,如果列省略了就不知道一行中有几个元素了,也不知道下一行从哪里开始存放数据了。

 

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

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

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