日记大全

日记大全 > 句子大全

这篇文章能让你理解读懂C语言中的一维数组 二维数组(字符数组)

句子大全 2009-10-27 03:26:03
相关推荐

在写C语言代码的时候,在很多开发场景中数组的使用非常频繁。既然重要,首先得知道数组的定义和用法了。

数组

数组:

当我们在定义数组的时候,要注意数组中这个[]中括号,[]里面的值不能是一个变量,[]只能为常量。

使用数组:

当使用数组时,数组中的[]中括号里面的值可以是常量也可以为变量。数值数组不能整体操作,而且数组的每一个元素都是变量,可以被改变赋值;如果数组只初始化部分元素,其他元素被初始化为0; # 备注:如果定义时,[]中括号里面没有值,这个数组的元素个数由{}大括号里面的元素个数来决定;比如来看下面一段代码演示:

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void test() { int arr[] = { 1,2,3,4,5 }; int num = 0; while (num < 10) { printf("Num = %d\n", arr[num]); num++; }}int main() { test(); return 0;}

结果图为:

当拿到数组,如何了解数据在内存中的地址?

可以这么解释为数据在内存中的地址,就是它在内存中的起始地址。比如定义一个数组 int arr[5];

如何知道int arr[5]代表着什么意思?

其中arr[0]就代表第0个元素,而前面加上&引用符号 &arr[0] 代表的是第0个元素的地址(也称为首元素地址);arr为数组名,代表数组,也代表第0个元素的地址。

用关系表示:arr == &arr[0];所以说数组名就是一个常量(不能被赋值),也是一个地址。

注意区分:

&arr[0]+1 或&arr[0]+2 代表的是第0个元素的地址加1跨过一个元素,或加2跨过两个元素;

arr+1 或 arr+2 代表的是第0个元素的地址加1跨过一个元素,或加2跨过两个元素;

&arr+1 代表的是整个数组的地址加1跨过整个数组;

二维数组

二维数组:

在定义二维数组时,有个注意的地方:不能省略列的下标,但可以省略行的下标。

比如这个二维数组:int arr[4][5];

注意区分:

arr[0][0]:代表的是第0行的第0个元素;

&arr[0][0]:代表的是第0行的第0个元素的地址;

arr[0]:代表的是第0行一维数组的数组名;

&arr[0]:代表的是第0行的地址;

arr:代表的是二维数组的数组名(代表二维数组),同时也代表首行地址;

&arr: 代表的是二维数组的地址;

关系则表示:

&arr[0][0]+1:代表的是第0行第0个元素地址加1跨过一个元素;

arr[0]+1:代表的是第0行的元素地址加1跨过一个元素;

&arr[0]+1:代表的是第0行的地址加1,跨过一行;

arr+1:代表的是首行地址加1,跨过一行;

&arr+1:代表的是二维数组地址加1,跨过整个数组。

字符数组

字符数组:

首先先了解下什么是数值数组 和 字符数组?

1、数值数组:int arr[5] 每 个元素int类型;

2、字符数组:char arr[5] 每个元素是char类型;

谈到字符数组一般都会想到字符串,它们的区别是:

字符串:字符数组中有\0字符的数组称为字符串,加之,有\0字符的字符数组操作起来也较方便。

字符数组:如果字符数组中含有\0的字符,也是字符串;

接下来用sfgets和fputs进行输入输出用代码方式演示下:

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char number[1024] = ""; // 也可以用scanf方式从键盘获取一个字符串,遇到\n结束; /*scanf("%s", number); printf("%s\n", number);*/ // 输入输出操作 fgets(number, sizeof(number), stdin); number[strlen(number) - 1] = 0; printf("%s\n", number); fputs(number, stdout); printf("\n"); return 0;}

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新