C语言数组的总结

所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分
量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 
把具有相同类型的若干元素按无序的形式组织起来的一种形式。 这些无序排列的同类数据元素的集合称为数组。数组是用于储存多个
相同类型数据的集合。

一维数组的创建和初始化

数组的创建:

type_t arr_name [const_name];

type_t是指数组的元素类型
arr_name是数组名
const_n是一个常量或者常量表达式,用来指定数组的大小
创建数组有一定的格式,比如说:

int arr1[10];
char arr2[3];
float arr3[5];
double arr4[20];

但下面这种格式是错误的,需特别注意:

int n = 10;
int arr5[n];

总结:在创建数组时,[ ]中不能为0或为空,必须要给一个常量,而不能是变量。

数组的初始化

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

int arr1[10] = {1,2,3};				//不完全初始化
int arrr2[] = {1,2,3,4};			//[]中的内容可以省略,默认为arr2[]数组里有4个元素
int arr3[5] = {1,2,3,4,5};			//完全初始化
char arr4[3] = {'a', 98, 'c'};		//arr4[]和arr5[]中存的内容是相同的,因为字符'b'的ASCII值就是98
char arr5[] = {'a', 'b', 'c'};		//数组中只有3个元素
char arr6[] = "abcdef"; 			//数组中有7个元素,在存储字符串的时候,字符串末尾默认有一个结束字符\0
char *p = "abcdef";					/*一个指针变量p是4字节,而字符串"abcdef"实际有7字节,看似无法存储,其实
									在内存中存储的是字符串首元素的地址,所以内存空间完全够用,可以存储*/
一些数组创建的实例:
#include <stdio.h>
int main()
{
	char arr5[3] = {'a', 'b', 'c'};
	int i = 0;
	printf("%s\n", arr2);
	return 0;
}

在打印arr5[ ]的时候,会出现图中的结果,这是因为%s打印的是字符串,遇到\0打印才会停止,所以会出现abc+随机值

#include <stdio.h>
int main()
{
	char *p1 = "abcdef";
	char *p2 = "abcdef";
	if(p1==p2)
	{
		printf("p1 == p2\n");
	}
	else
	{
		printf("p1 != p2\n");
	}
	return 0;
}

因为"abcdef"是一个字符串常量,不可以被改变,而p1,p2都指向“abcdef”,所以不用存两次,p1,p2里都存的是首元素a的地址。

#include <stdio.h>
int main()
{
	char p1[] = "abcdef";
	char p2[] = "abcdef";
	if(p1==p2)
	{
		printf("p1 == p2\n");
	}
	else
	{
		printf("p1 != p2\n");
	}
	return 0;
}

两个数组在内存中是不同的空间,而数组名又是首元素的地址,所以p1 != p2.

一维数组的使用

数组的使用采用[ ]下标引用操作符来实现,它其实就是数组访问的操作符。
注意:

  1. 数组使用下标来访问,下标从0开始
  2. 数组的大小可以通过计算得到
int arr[10];
int sz = sizeof(arr)/sizeof(arr[0]);

需特别指出的是,不能在函数内部求数组的大小,因为数组名给函数传参时传的是首元素的地址,这样运行结果会出错。

一维数组的指针访问

#include <stdio.h>
int main()
{
	int arr[10] = {0};
	int i = 0;
	int *p = arr;
	int sz = sizeof(arr)/sizeof(arr[0]);
	for(i=0; i<sz; i++)
	{
		*(p+i) = i;
	}
	for(i=0; i<sz; i++)
	{
		printf("%d ", *(p+i));
	}
	return 0;
}

观察结果我们可以发现,首元素地址+ i 可以获取数组中每个元素的地址

二维数组的创建和初始化

数组在内存中的存储

不论是一维数组,还是二维数组,它们在内存中都是连续存放的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值