C语言:数组

本文详细介绍了C语言中的数组,包括数组的定义、内存分配、地址概念以及初始化方法。通过实例展示了数组大小、元素大小和元素个数的计算。此外,还探讨了二维数组的特性,如地址计算、初始化方式以及如何打印和操作二维数组。内容涵盖了一维数组和二维数组的初始化、大小计算以及内存布局等方面。
摘要由CSDN通过智能技术生成
概述

相同数据类型的有序集合

数组元素地址连续

数组名为地址,是数组首元素的地址

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {
	int arr[] = {10,20,30,40,50,60,70,80,90,100};
	printf("arr = %p\n", arr);
	printf("&arr[0] = %p\n", &arr[0]);
	printf("&arr[1] = %p\n", &arr[1]);
	printf("&arr[2] = %p\n", &arr[2]);
	return 0;
}
运行结果:
arr = 0034F6D8
&arr[0] = 0034F6D8
&arr[1] = 0034F6DC
&arr[2] = 0034F6E0
数组大小、数组元素大小、数组元素个数
int main03(void) {
	int arr[] = { 10,20,30,40,50,60,70,80,90,100 };
	printf("数组大小:%u\n", sizeof(arr));
	printf("数组元素大小:%u\n", sizeof(arr[0]));
	printf("数组元素个数:%d\n", sizeof(arr) / sizeof(arr[0]));
	return 0;
}
数组初始化
int arr0[10] = { 1,2,4 };//剩余未初始化的元素默认为0
int arr1[10] = {0};//将数组元素全部初始化为0
int arr2[10];//数组元素为内存实际值,随机值,可使用下标单个赋值,eg:arr[1]=6
int arr3[] = {1,2,4};//编译器按赋值自动获取数组元素个数
二维数组

一围数组的数组,数组元素是一围数组

  • 打印二维数组
int main(void) {
	int arr[2][3] = { {2,5,8},{7,9,5} };
	int i, j;
	for (i = 0; i < 2; i++) {
		for (j = 0; j < 3; j++) {
			printf("arr[%d][%d]=%d\t", i, j, arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}
运行结果:
arr[0][0]=2     arr[0][1]=5     arr[0][2]=8
arr[1][0]=7     arr[1][1]=9     arr[1][2]=5
  • 数组大小、数组一维元素大小、数据元素大小、行数、列数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {
	int arr[2][3] = { {2,5,8},{7,9,5} };
	printf("数组大小:%d\n", sizeof(arr));
	printf("数组一维元素大小:%d\n", sizeof(arr[0]));
	printf("数组元素大小:%d\n", sizeof(arr[0][0]));
	printf("数组行数:%d\n", sizeof(arr) / sizeof(arr[0]));
	printf("数组列数:%d\n", sizeof(arr[0]) / sizeof(arr[0][0]));
	return 0;
}
  • 数组的地址=数组的首行地址=数组的第一个元素的地址
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {
	int arr[2][3] = { {2,5,8},{7,9,5} };
	printf("arr:%p\n", arr);
	printf("arr[0]:%p\n", arr[0]);
	printf("&arr[0][0]:%p\n", &arr[0][0]);
	printf("&arr[0][2]:%p\n", &arr[0][2]);
	printf("arr[1]:%p\n", arr[1]);
	return 0;
}
运行结果:
arr:0026F7A8
arr[0]:0026F7A8
&arr[0][0]:0026F7A8
&arr[0][2]:0026F7B0
arr[1]:0026F7B4
  • 初始化
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void) {
	int arr[3][4] = { {2,7},{75,8},{26,37,9} };//未被初始化的数值为0
	int arr1[3][4] = {0};//初始化元素全为0的数组
	int arr2[][4] = {2,7,75,8,26,37,9};//编译器自动按声明的行列存放元素,一行满了再存下一行
	int i, j;

	int row = sizeof(arr ) / sizeof(arr[0]);
	int col = sizeof(arr[0]) / sizeof(arr[0][0]);
	for (i = 0; i < row; i++) {
		for (j = 0; j < col; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	printf("====================\n");
	int row1 = sizeof(arr1) / sizeof(arr1[0]);
	int col1 = sizeof(arr1[0]) / sizeof(arr1[0][0]);
	for (i = 0; i < row1; i++) {
		for (j = 0; j < col1; j++)
		{
			printf("%d ", arr1[i][j]);
		}
		printf("\n");
	}
	printf("====================\n");
	int row2 = sizeof(arr2) / sizeof(arr2[0]);
	int col2 = sizeof(arr2[0]) / sizeof(arr2[0][0]);
	for (i = 0; i < row2; i++) {
		for ( j = 0; j < col2; j++)
		{
			printf("%d ", arr2[i][j]);
		}
		printf("\n");
	}
	return 0;
}
运行结果:
2 7 0 0
75 8 0 0
26 37 9 0
====================
0 0 0 0
0 0 0 0
0 0 0 0
====================
2 7 75 8
26 37 9 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值