资讯专栏INFORMATION COLUMN

2021.11.25 关于c语言的数组

不知名网友 / 625人阅读

摘要:结论一维数组在内存中是连续存放的二维数组关于二维数组的创建二维数组中的表示行数,表示列数注意二维数组的不完全初始化剩下的元素也都默认为。示例如下关于二维数组的打印我们通过二维数组的下标来进行打印,而二维数组的行和列下标都是从开始的。

 目录

一维数组

关于一维数组的创建

关于数组的打印

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

关于 sizeof 的基本用途

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

二维数组

关于二维数组的创建 

关于二维数组的打印

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

一维数组

关于一维数组的创建

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

错误写法:

 正确写法:

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

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

示例如下:


关于数组的打印

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

举例:

#include#define _CRT_SECURE_NO_WARNINGSint 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”之前字符个数—仅针对字符串求长度—得引用头文件

示例1如下:

#define _CRT_SECURE_NO_WARNINGS 1#include#includeint 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#includeint 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#define _CRT_SECURE_NO_WARNINGSint 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#define _CRT_SECURE_NO_WARNINGSint 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#define _CRT_SECURE_NO_WARNINGSint 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#define _CRT_SECURE_NO_WARNINGSint 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个字节的大小。

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

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

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


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125653.html

相关文章

  • #黑五#hostvenom:芝加哥独立服务器,前三月20%优惠,月付$36起

    摘要:官网优惠码前三个月优惠促销套餐以下原价购买请使用优惠码套餐内存硬盘带宽流量防御价格购买月点此直达月点此直达月点此直达月点此直达月点此直达月点此直达月点此直达月点此直达月点此直达月点此直达月点此直达月点此直达月点此直达 官网:https://hostvenom.com 优惠码: BF2021    前三个月20%优惠 促销套餐: 以下原价购买请使用优惠码 ...

    不知名网友 评论0 收藏0
  • C语言C语言字符串 | 关于String | 通过国外教材讲解字符串 | 专栏遗漏知识点补充

    摘要:语言中使用斜杠来表示一个字符串的结束。注意事项由于被替换,如果字符串末尾有,换行会出现两次。函数的原型成功返回失败返回将的字符串录入到文件指针中。 前言: 考虑到之前在专栏中讲字符串的时候有些知识点没有详细地讲解,所以本篇是对字符串相关的知识点的补充篇!例如 %s 输出左对齐右对齐,限制...

    trigkit4 评论0 收藏0
  • 如何学好c语言

    摘要:第二条军规必须画图理解,内存布局语言是一门偏底层的语言,可以直接操作访问内存的所以我们应该清楚知道,写出的代码所对应的内存布局。如果想学好语言,三条军规势在必行最后,关于学好语言我想说的也就到这里了,感谢你的观看。 目录 一.讲这个主题的原因 二.关于选择问题 三.具体学习方法 一.为什么要...

    xingpingz 评论0 收藏0
  • Cocoa改造前篇 - 说在前面

    摘要:即使如此,仍有一部分人至今站在的对立面,从代码复杂度建模能力要求等方面提出异议,坚持写的时候不构造类,写纯过程的程序。但其实,这些自称为原党的朋友,并不能说自己没有使用,因为这些语言中变量,跟语言中的变量,有本质的不同。 更好的阅读体验请点击 原文 从面相对象说起 面向对象的程序设计(Object-Oriented Programming,简记为OOP)这个概念大家都有所耳闻,目前(2...

    Noodles 评论0 收藏0
  • C语言】玩转指针——关于指针,你需要掌握基础知识!

    摘要:如果我们要将的地址保存到中,我们需要我们给指针变量相应的类型。类型的指针是为了存放类型变量的地址这里可以看到,指针的定义方式是类型名指针变量名。如下最后本文介绍的是指针的基础知识,往后还会继续深入讲解指 ...

    zebrayoung 评论0 收藏0

发表评论

0条评论

不知名网友

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<