文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

1.基础知识

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语言数组内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯