【C语言】数组_c语言结构体数组「建议收藏」

【C语言】数组_c语言结构体数组「建议收藏」数组是很多数的组合条件:1、这些数存放类型相同,2、在内存中必须是连续存储的#include#includeintmain(){ //数组的创建 //数组的初始化 intarr1[10]={1,2,3,4,5};//不完全初始化,剩下的的元素默认初始化为0 chararr2_1[10]={‘a’,’b’}; chararr2_2_1[10]={‘a’,’b’}; chararr2_c语言数组全部赋值为1

数组是很多数的组合

条件:1、这些数存放类型相同,2、在内存中必须是连续存储

数组的初始化

type_t  arr_name  [const_n];

const_n        只能是常量表达式

type_t           数组的类型

arr_name      数组名

在定义数组时,需要指定数组中元素的个数。方括号中的常量表达式就是用来指定元素的个数。数组中元素的个数又称数组的长度。

下面就是错误的定义,n不是常量表达式

int n = 10;
int arr1[n];

【C语言】数组_c语言结构体数组「建议收藏」

 但可以用 #define 定义n

C语言中,可以用 #define 定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。

【C语言】数组_c语言结构体数组「建议收藏」

数组内存放的元素的下标0 开始。

h 是 arr[0],e 是 arr[1]·······以此类推

int arr1[] = {'h','e','l','l','o'};

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "hello";//h e l l 0 \0
	char arr2[] = { 'h','e','l','l','o' };//h e l l o
	printf("%d\n", strlen(arr1));//结果 5,数组arr1 元素 \0 前的元素 = 5
	printf("%d\n", sizeof(arr1));//结果 6,数组arr1 元素所占空间,h e l l o \0
	printf("%d\n", strlen(arr2));//结果 随机值,数组arr2中找不到 \0
	printf("%d\n", sizeof(arr2));//结果 5,数组arr2 元素所占空间,h e l l o
	return 0;
}

 数组 arr1 中的元素 h 、e 、l 、l 、o 、\0

char arr1[] = "hello";

 【C语言】数组_c语言结构体数组「建议收藏」

 数组arr2 中的元素 h、e、l、l、o

char arr2[] = {'h','e','l','l','o'};

 【C语言】数组_c语言结构体数组「建议收藏」

strlen        库函数

头文件        <string.h>

计算数组内 \0 前的的元素,直到遇到 \0 停止,如果数组内未找到 \0 则返回值为随机数

只能求字符串长度

strlen(arr1) == 5

strlen(arr2) == 随机值        

sizeof        操作符,运算符

返回一个变量或者类型的大小(以字节为单位)

sizeof(arr1) == 6

sizeof(arr2) == 5


方括号  [ ]        下标引用操作符, 数组访问操作符

#include<stdio.h>
#include<string.h>
int main()
{
    char arr[]="Hello~World";
    int i=0;
    for(i=0;i<(int)strlen(arr);i++)//strlen 返回值是无符号型的,可以强制类型转换成 int
    {
        printf("%c",arr[i]);
    }
    return 0;
}

 一维数组的创建

打印数组地址

#include<stdio.h>
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i < sz; i++)
	{
		printf("arr[%d] = %p\n", i, &arr[i]);
	}
	return 0;
}

运行结果: 64位下(32位下相差2)

【C语言】数组_c语言结构体数组「建议收藏」

数组元素在内存中必须是连续存储

【C语言】数组_c语言结构体数组「建议收藏」

 【C语言】数组_c语言结构体数组「建议收藏」

 二维数组的创建

int arr[3][4];
char arr[3][4];
double arr[4][5]; 

 二维数组的初始化

int arr1[3][4] = {1,2,3,4};
int arr2[3][4] = {
  
  {1,2},{3,4}};
int arr3[][4] = {
  
  {1,2},{3,4}};

int arr[3][4];        是 3 行 4 列,行可以省略,列不能省略

arr[0][0]        arr[0][1]        arr[0][2]         arr[0][3]

arr[1][0]        arr[1][1]        arr[1][2]        arr[1][3]

arr[2][0]        arr[2][1]        arr[2][2]        arr[2][3]

 二维数组的打印

#include<stdio.h>
int main()
{
	int arr[3][4] = { {1,2,3,4},{2,3,4,5},{3,4,5,6} };
	int i = 0, j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%d", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

【C语言】数组_c语言结构体数组「建议收藏」

 二维数组的输入,及二维数组的地址

#include<stdio.h>
int main()
{
	int arr[3][4];
	int i = 0, j = 0;
	printf("输入二维数组arr[3][4],用空格分开:");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			scanf("%d", &arr[i][j]);
		}
	}
	printf("数组的打印:\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	printf("数组的地址:\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("arr[%d][%d] = %p\n", i, j, &arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

64位

【C语言】数组_c语言结构体数组「建议收藏」

 二维数组本质上也是一维数组

【C语言】数组_c语言结构体数组「建议收藏」

今天的文章【C语言】数组_c语言结构体数组「建议收藏」分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/57879.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注