网站首页 > 基础教程 正文
在写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;
}
猜你喜欢
- 2024-11-12 C语言之一维数组 c语言一维数组排序
- 2024-11-12 总结系列合集:C++中的动态数组 c+ 动态数组
- 2024-11-12 C语言结构体,如何定义结构体数组?linux C第62讲
- 2024-11-12 数组不可以直接赋值,为什么结构体中的数组却可以?
- 2024-11-12 C/C++编程笔记:C数组、字符串常量和指针!三分钟弄懂它
- 2024-11-12 数据结构入门:数组介绍 数据结构之数组
- 2024-11-12 再说,数组 数组+数组
- 2024-11-12 c++入门教程:c++中的动态数组 c++动态数组怎么用
- 2024-11-12 c++数组指导 c++数组的定义与使用
- 2024-11-12 C++基础概念:指针与数组,指针运算,指针与机器物理地址
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)