ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021.11.25 关于c语言的数组

2021-11-28 13:02:02  阅读:109  来源: 互联网

标签:25 arr 2021.11 int 二维 数组 printf sizeof


 目录

一维数组

关于一维数组的创建

关于数组的打印

关于“strlen”与“sizeof”的区别

关于 sizeof 的基本用途

关于一维数组在内存中的储存

二维数组

关于二维数组的创建 

关于二维数组的打印

关于二维数组在内存中的储存

一维数组

关于一维数组的创建

数组的[]中要给一个常量才行,不能使用变量

错误写法:

 正确写法:

 除整型之外还可创建以下数组:

注意:不完全初始化,剩下的元素默认初始化为0。

示例如下:


关于数组的打印

我们需根据其数组的下标来进行打印,而下标是从0开始。

举例:

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main()
{
	char arr [] = "abcdef";
	//            "  a b c d e f \0"
	//     下标   "  0 1 2 3 4 5 "
	int i = 0;
	// 定义整型 ‘i’ 为下标数
	for (i = 0; i < 6; i++)
	{
		printf("%c", arr[i]);
	}
	return 0;
}

结果为:

 


关于“strlen”与“sizeof”的区别

siazeof(计算变量、数组、类型的大小—单位是字节—操作符)

strlen(求字符串的长度—“\0”之前字符个数—仅针对字符串求长度—得引用头文件<string.h>)

示例1如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

int main()
{
	char arr4[] = "abcdef";
	               //    "abcdef\0"
	printf("%d\n", sizeof (arr4) );
	printf("%d\n", strlen (arr4));
	return 0;
}

结果如下: 

sizeof (“a b c d e f \0”)一共七个元素—— 7*1=7

strlrn  (“a b c d e f \0”)“\0”之前6个字符—— 6

示例2如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b', 'c' };
	printf("%d\n", sizeof(arr1));
	printf("%d\n", sizeof(arr2));
	printf("%d\n", strlen(arr1));
	printf("%d\n", strlen(arr2));
	return 0;
}

结果如下:

sizeof(arr1)— " a  b  c  \0 " — 4*1=4

sizeof(arr2)— { 'a', 'b', 'c' } — 只有三个元素— 3*1=3

strlen (arr1)—  " a  b  c  \0 " — "\0"之前三个字符—3

strlen (arr2)— { 'a', 'b', 'c' } — 因为strlen是运算到"\0"结束,我们并不知道在元素'c'之后的元素,所以其所打印出来数的应是随机数


关于 sizeof 的基本用途

sizeof是可计算变量、数组、类型的大小的操作符,当我们计算整个数组的大小然后再除以数组中单个元素的大小,便可以得到该数组的元素个数。

举例:(利用这一点我们可以很方便的打印出数组中的各元素)

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
	int sz = sizeof(arr) / sizeof(arr[0]); // 利用 sizeof 计算数组中元素的个数
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d", arr[i]);
	}
	return 0;
}

结果为:


关于一维数组在内存中的储存

举例:(我们先打印出数组中各元素的地址寻找规律)

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

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

结果为:(该地址为16进制)( 0-9  a(10) b(11) c(12) d(13) e(14) f(15))

我们不难观察出其相邻元素地址之间都相差为4,为整型元素4个字节的大小。 

结论:一维数组在内存中是连续存放的


二维数组

关于二维数组的创建 

 二维数组中的【3】表示行数,【4】表示列数

注意:1:二维数组的不完全初始化剩下的元素也都默认为0。

           2: 二维数组行可省略,列不可省略。  

示例如下:

 


关于二维数组的打印

我们通过二维数组的下标来进行打印,而二维数组的行和列下标都是从0开始的。

举例:

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main()
{
	int arr[3][4] = { {1,2,3},{4,5} };
 //         下标 :   0  1  2  3
 //      
 //               0   1  2  3  0 
 //               1   4  5  0  0
 //               2   0  0  0  0
 //
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		int j = 0;
		for (j = 0; j < 4; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

关于二维数组在内存中的储存

举例:(我们先打印出数组中各元素的地址寻找规律)(int arr [3][4])

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

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]=%p\n ",i,j, &arr[i][j]);
		}
	}
	return 0;
}

结果为:

我们也不难观察出其相邻元素地址之间都相差为4,为整型元素4个字节的大小。

实际二维数组在储存时变为如图形式连续存放

以上便是关于数组的内容了,喜欢可点个赞或收藏哦!

谢谢浏览!(如有问题,请各位大神即使指出,我会及时纠正!)


标签:25,arr,2021.11,int,二维,数组,printf,sizeof
来源: https://blog.csdn.net/weixin_63888301/article/details/121549032

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有