C语言数组学生笔记|“朝闻道”知识分享大赛

2301_80948168 2024-10-31 19:03:22

这是我参加朝闻道知识分享大赛的第九篇文章

C语言数组学生笔记

目录

C语言数组学生笔记

一、数组的概念

二、一维数组的创建和初始化

一维数组的创建

数组的初始化

三、一维数组的使用

数组的下标

数组元素的打印(遍历)

使用for循环向数组中输入数据

一维数组在内存中的存储

四、二维数组的创建和初始化

二维数组的创建

二维数组的初始化

五、二维数组的使用

二维数组的访问

使用for循环嵌套向二维数组中赋值和遍历

六、字符数组和字符串

字符数组

字符串

字符数组的输入


一、数组的概念

数组是一组相同类型元素的集合,这些元素在内存中连续存储。数组可以是一维的,也可以是多维的,常见的是一维数组和二维数组。在C语言中,数组是通过指定类型、数组名和元素个数来创建的。

二、一维数组的创建和初始化

  1. 一维数组的创建

    一维数组的创建语法如下:

    type arr_name[常量值];


    其中,type指定数组中存放的数据类型,可以是charshortintfloat等,也可以是自定义的类型。arr_name是数组的名字,可以根据需要任意取。[常量值]指定的是数组中元素的个数。

  2. 数组的初始化

    数组的初始化就是给定数组中元素的初始值,可以完全初始化也可以不完全初始化。

    • 完全初始化

      int arr[5] = {1, 2, 3, 4, 5};

      此时,数组中的每个元素都被赋予了初始值。

    • 不完全初始化

      int arr[5] = {1, 2, 3};

      此时,只有前三个元素被初始化,剩下的元素默认初始化为0。即arr[0] = 1arr[1] = 2arr[2] = 3arr[3] = 0arr[4] = 0

    • 不指定长度,通过大括号内元素个数确定数组长度

      
      	int arr[] = {1, 2, 3, 4, 5};
      
      此时,数组的长度由大括号内的元素个数确定。
      
    • 错误的初始化

      int arr[5] = {1, 2, 3, 4, 5, 6};

      这是错误的,因为大括号内的元素个数大于数组定义时的长度。

三、一维数组的使用

  1. 数组的下标

    C语言规定数组是有下标的,下标从0开始。假设数组有n个元素,最后一个元素的下标是n-1。例如,对于数组int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};,要访问下标为7的元素,可以使用arr[7]

  2. 数组元素的打印(遍历)

    可以使用for循环来遍历数组并打印每个元素的值。例如:

    #include <stdio.h> 
    int main() { 
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    for (int i = 0; i < 10; i++) { 
    printf("%d ", arr[i]); 
    } 
    return 0; 
    }

     

  3. 使用for循环向数组中输入数据

    同样,可以使用for循环来向数组中输入数据。例如:

    
    
     
    #include <stdio.h> 
    int main() { 
    int arr[10]; 
    for (int i = 0; i < 10; i++) { 
    scanf("%d", &arr[i]); 
    } 
    for (int i = 0; i < 10; i++) { 
    printf("%d ", arr[i]); 
    } 
    return 0; 
    }

     

  4. 一维数组在内存中的存储

    数组在内存中是连续存放的。可以通过打印数组元素的地址来验证这一点。例如:

    #include <stdio.h> 
    int main() { 
    int arr[10] = {0}; 
    for (int i = 0; i < 10; i++) { 
    printf("%p\n", &arr[i]); 
    } 
    return 0; 
    }


    从输出结果可以看出,随着下标的增长,地址越来越大,且每两个相邻地址的差等于一个整型变量所占的字节数(通常为4个字节)。

  5. sizeof计算数组元素个数

    在遍历数组的时候,往往需要知道数组元素的个数。这时可以使用sizeof运算符来计算数组的大小,然后除以单个数组元素的大小来得到元素个数。例如:

    #include <stdio.h> 
    int main() { 
    int arr[10] = {0}; 
    int len = sizeof(arr) / sizeof(arr[0]); 
    printf("%d", len); 
    return 0; 
    }

     

四、二维数组的创建和初始化

  1. 二维数组的创建

    二维数组的创建语法如下:

    type arr_name[常量值1][常量值2];

    其中,type指定数组中存放的数据类型,arr_name是数组的名字,[常量值1][常量值2]分别指定数组的行数和列数。

  2. 二维数组的初始化

    • 不完全初始化

      
      	int arr[3][5] = {1, 2};

      此时,只有第一行的前两个元素被初始化,剩下的元素默认初始化为0。

    • 完全初始化

      int arr[3][5] = { 
      {1, 2, 3, 4, 5}, 
      {2, 3, 4, 5, 6}, 
      {3, 4, 5, 6, 7} 
      };

      此时,数组的每个元素都被赋予了初始值。

    • 按照行初始化

      int arr[3][5] = {{1, 2}, {3, 4}, {5}};

      此时,每一行都被当作一个独立的数组来初始化,未初始化的元素默认初始化为0。

    • 行可以省略

      
      	int arr[][5] = {1, 2, 3, 4, 5, 6, 7};

      此时,可以不指定行数,但一定要指定列数,否则编译器无法确定每行有多少元素。

五、二维数组的使用

  1. 二维数组的访问

    二维数组的访问也使用下标形式,通过行号和列号来唯一确定数组中的一个元素。例如,对于数组int arr[3][5] = {{1, 2, 3, 4, 5}, {2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}};,要访问第二行第四列的元素,可以使用arr[1][3]

  2. 使用for循环嵌套向二维数组中赋值和遍历

    可以使用嵌套的for循环来向二维数组中赋值和遍历。例如:

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

     

六、字符数组和字符串

  1. 字符数组

    字符数组是由一个一个的字符组成的数组。例如:
     

    
    	char arr1[5] = {'H', 'e'}; 
    
    	char arr2[8] = {'a', 98};

     

  2. 字符串

    字符串是由双引号引起来的一串字符。字符串的结束标志是一个\0的转义字符,在计算字符串长度时\0不算作字符串的内容。例如:

    
    
     
    char arr1[] = "Jack"; 
    char arr2[] = {'J', 'a', 'c', 'k'}; 
    printf("%s\n", arr1); 
    printf("%s\n", arr2);

     

  3. 字符数组的输入

    可以使用scanf函数从键盘输入字符数组(字符串)。例如:

    
    	#include <stdio.h> 
    
    	int main() { 
    
    	char name[256] = {0}; 
    
    	printf("please input name:"); 
    
    	scanf("%s", name); 
    
    	printf("

     

...全文
13 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,040

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧