iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言从基础到进阶全面讲解数组
  • 100
分享到

C语言从基础到进阶全面讲解数组

2024-04-02 19:04:59 100人浏览 薄情痞子
摘要

目录1.基础知识2.数组的分类2.1按元素类型分类2.2按维数分类3.数组定义和初始化3.1 一维数组3.2 二维数组4.数组元素的引用方法5.字符数组的定义1.基础知识 C语言中使

1.基础知识

  • C语言中使用数组表示多个连续的同类型的存储位置
  • 使用数组表示多个连续存储位置的时候只需要一个名字,这个名字代表所有这些存储位置的整体
  • 每一个存储位置有一个自己的编号,最前边的存储位置的编号是0,向后依次递增,最后一个存储位置的编号是个数减一,这个编号叫做下标
  • 决不可以使用超过范围的下标
  • 使用名称和下标就可以表示这组存储位置中的某一个

2.数组的分类

2.1按元素类型分类

  • 字符数组:若干个字符变量的集合
  • 短整型数组
  • 整型数组
  • 长整型数组
  • 浮点型数组
  • 指针数组
  • 结构体数组

2.2按维数分类

  • 一维数组
  • 二维数组
  • 多维数组

3.数组定义和初始化

3.1 一维数组

格式: 数据类型 数组名[数组元素的个数];

数组名和元素个数中间没有空格

int a[10];定义了一个名为a的数组,每个元素都是int类型,一共有10个元素 数组元素的个数在定义的时候也可以不写,但是需要初始化,如下例的b[ ]

#include<stdio.h>
int main(int arGC,char *argv[]){
		int a[10];
		int b[] = {10,20,30};
		printf("sizeof(a) = %d\n",sizeof(a));
		return 0;
}

初始化

全部初始化 int a[5] = {1,2,3,4,5};

部分初始化,赋值不够的后面补0 int a[5] = 2;

#include<stdio.h>
int main(){
    // 如果不初始化,直接使用为随机值
    int a[4] = {2,3,6,5};
    printf("数组a的元素为:%d,%d,%d,%d\n",a[0],a[1],a[2],a[3]);       
    int b[4] = {2,5};
    printf("数组b的元素为:%d,%d,%d,%d\n",b[0],b[1],b[2],b[3]);         
}

3.2 二维数组

格式: 数据类型 数组名[行的个数][列的个数]

例如 int a[2][4]

解释:名为a的二维数组,每个元素都是int类型,包含两行四列元素,一共有8个元素

二维数组也是连续开辟空间,访问元素是行和列都是从0开始

分别是 a[0][0] , a[0][1]…a[1][3]

注意:二维数组的行数可以省略,列数不能省略,在初始化的时候按照如下操作

系统会根据列数自动指定行数

#include<stdio.h>
int main(){
    int a[2][4];
    printf("sizeof(a)=%ld %ld\n",sizeof(a),2 * 4 *sizeof(int));
    // 省略行标:
    int b[][4] = {1,2,3,4,5};
    printf("sizeof(b)= %ld\n",sizeof(b));
    return 0;
}

初始化

逐行初始化:

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

部分初始化:

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

全局初始化:

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

4.数组元素的引用方法

一维数组:数组名[下标]

二维数组:数组名[行标][列标]

上例中已经通过a[ i ][ j ]进行引用,简单易懂

5.字符数组的定义

#include<stdio.h>
int main(){
    // 用字符的方式赋值
    char c1[] = {'c',' ','p','i','g'};
    printf("c1数组为:\n");
    for(int i = 0;i < 5;i++){
        printf("'%c',",c1[i]);
    }
    printf("\n");
    // 用字符串的方式赋值,多占1个字节,用于存放结束标志 ‘\0'
    char c2[] = "c pig";
    for(int j = 0;j < 6;j++){
        printf("'%c',",c2[j]);
    }
    // 二维数组  字符赋值
    char a[][5] = {
        {'a','b','v','g','y'},
        {'a','b','v','g','y'}
    };
    // 字符串赋值,知道为什么是6吗? 因为多了一个 '\0'
    char b[][6] = {"hello","world"};
    // 二维数组的元素读者可自行打印练习
    return 0;
}

练习:定义一个字符数组,通过scanf函数输入字符串并输出结果

#include<stdio.h>
int main(){
    //通过赋值”“这样的方式可以清除字符数组中的垃圾字符,让每一个元素都是 \0
    char ch[32] = "";
    printf("请输入一个字符串:\n");
    scanf("%s",ch);   //数组名就是当前数组的首地址
    printf("ch = %s\n",ch);
    return 0;
}

到此这篇关于C语言从基础到进阶全面讲解数组的文章就介绍到这了,更多相关C语言数组内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言从基础到进阶全面讲解数组

本文链接: https://www.lsjlt.com/news/148033.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言从基础到进阶全面讲解数组
    目录1.基础知识2.数组的分类2.1按元素类型分类2.2按维数分类3.数组定义和初始化3.1 一维数组3.2 二维数组4.数组元素的引用方法5.字符数组的定义1.基础知识 C语言中使...
    99+
    2024-04-02
  • 从基础到进阶:全面解析 PHP SPL 扩展
    1. 简介 PHP SPL 扩展是一个强大的 PHP 标准库,它提供了许多有用的类和接口,可以帮助开发人员轻松、高效地处理数据和执行各种操作。SPL 包括许多不同的数据结构,如堆栈、队列、链表、集合和映射,以及各种算法,如排序、搜索和哈...
    99+
    2024-02-03
    PHP SPL 数据结构 算法 面向对象
  • C语言数组全面详细讲解
    目录1.基础知识2.数组的分类2.1按元素类型分类2.2按维数分类3.数组定义和初始化3.1 一维数组3.2 二维数组4.数组元素的引用方法5.字符数组的定义1.基础知识 C语言中使...
    99+
    2024-04-02
  • C语言零基础讲解指针和数组
    目录一、指针和数组分析-上1.数组的本质2.指针的运算3.指针的比较4.小结二、指针与数组分析-下 1.数组的访问方式2.下标形式 VS 指针形式3.a 和 &a ...
    99+
    2024-04-02
  • 零基础详解C语言指针进阶
    目录前言1.字符指针例题 12.指针数组例题 23.数组指针3.1数组指针的定义3.2 &数组名与数组名3.3 数组指针的使用4.数组与指针在函数里的传参4.1 一维数组的传...
    99+
    2024-04-02
  • Oracle数据类型解析:从基础到进阶
    Oracle数据类型解析:从基础到进阶 Oracle数据库是一款强大的关系型数据库管理系统,广泛应用于企业级应用程序开发和数据存储中。在Oracle数据库中,数据类型是非常重要的概念,...
    99+
    2024-03-07
    数据类型 oracle 进阶
  • 详解C语言初阶基础
    目录1.什么是c语言2.初始化:3.变量和常量4.作用域与生命周期简单阐述:作用域:生命周期(存在与消失):作用域与生命周期的区别作用域:生命周期:5.    &...
    99+
    2024-04-02
  • 详解C语言初阶基础(2)
    目录1.选择语句(if)2.循环while循环for循环do-while循环补充总结1.选择语句(if) 我们先不讲switch,后面会补充。先来对简单地if进行了解。 我们已经知道...
    99+
    2024-04-02
  • Python 语法的进阶指南:从基础到精通
    基础语法回顾 数据类型:Python提供多种数据类型,如整数、浮点数、字符串、布尔值和列表。 运算符:Python支持算术运算符(+、-、*、/)、比较运算符(==、!=、>、<)和逻辑运算符(and、or、not)。 控...
    99+
    2024-02-19
    Python语法 高级特性 函数 模块 装饰器
  • C语言 指针数组进阶详解
    目录指针与数组中的sizeof与strlensizeofstrlen数组名1、一维数组整型数组字符数组指针数组2、二维数组指针笔试题 笔试题1笔试题2笔试题3笔试题4笔试题...
    99+
    2024-04-02
  • Python 切面编程进阶指南:从基础到实战
    ...
    99+
    2024-04-02
  • c语言 指针零基础讲解
    1.指针是什么(可能有点难理解) 指针的是啥? 指针实际上就是地址,地址就是系统给定的编号,编号就是一个个内存单元。 在某种情况来说指针=地址=编号=内存单元。 指针就是地址,顾名思...
    99+
    2024-04-02
  • 【C语言进阶】最常用的库函数大全——从入门到精通
    目录 前言: 一.字符串函数 1.strlen——求字符串长度 strlen 2.长度不受限制的字符串函数 a.strcpy——字符串拷贝 strcpy  b.strcat——追加字符串 strcat  c.strcmp——字符串比较 st...
    99+
    2023-10-20
    c语言 java 前端
  • C语言数据结构顺序表的进阶讲解
    目录前言一、顺序表的构造VS功能1.顺序表的构造2.接口实现(功能)二、功能具体分析1.初始化2.销毁3.检查size与capacity是否溢出4.尾增功能(实现)5.打印三、实现具...
    99+
    2024-04-02
  • C语言全方位讲解数组的使用
    目录一维数组的创建和初始化1.数组的创建2.数组创建方式 3.数组的初始化一维数组的使用一维数组的存储二维数组的创建与初始化 1.二维数组的创建2.二维数组的初始...
    99+
    2024-04-02
  • PHP 安全性深度解析:从基础到进阶,打造铜墙铁壁
    输入过滤和验证:对用户输入的数据进行过滤和验证,防止恶意代码注入。 使用安全函数:使用 PHP 内置的安全函数,如 htmlspecialchars()、addslashes() 等,防止跨站点脚本攻击 (XSS) 和 SQL 注...
    99+
    2024-02-05
    基础安全防护
  • C语言超全面讲解字符串函数
    目录1、gets函数2、puts函数3、strcat函数4、strcpy函数(strncpy函数)5、strcmp函数(strncmp函数)6、strlen函数7、strlwr函数8...
    99+
    2024-04-02
  • 详解C语言初阶之数组
    目录1.数组1.1数组的概念1.2数组的定义 a:完全初始化b:不完全初始化 c:给定元素个数d:不给定元素个数1.3数组的下标访问总结1.数组 1.1数组的概念 所谓数组...
    99+
    2024-04-02
  • C语言指针必备基础全面覆盖
    目录前言一、指针是什么?1.数据在内存中的存储2.一个小的单元到底是多大?二、指针变量1.什么是指针变量2.指针类型3.指针类型的作用三、野指针1.什么是野指针2.野指针成因2.1....
    99+
    2024-04-02
  • Go语言切片详解:从基础到高级
    Go语言切片详解:从基础到高级 引言:Go语言是一种快速、可靠的现代编程语言,切片(slice)是其内置的一种数据结构,它是对数组的一个抽象。切片是动态数组,长度可变,与数组相比更加灵...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作