当前位置: 首页 > news >正文

C语言需要掌握的基础知识点之数组

C语言需要掌握的基础知识点

C语言中的数组

数组是C语言中一种非常重要的数据结构,用于存储相同类型元素的集合。

以下是一些关于C语言数组的重要点:

声明数组:
类型 数组名[数组大小];
例如:int numbers[10];

  • 初始化数组:

可以在声明时初始化数组,例如:
int numbers[5] = {1, 2, 3, 4, 5};
如果初始化列表中的元素个数小于数组大小,则剩余元素被初始化为0。
例如:int numbers[5] = {1, 2}; // 前两个元素为1和2,后面三个为0。
也可以不指定大小,编译器会根据初始化列表自动计算大小:
int numbers[] = {1, 2, 3, 4, 5}; // 数组大小为5。

  • 访问数组元素:

通过索引访问,例如:numbers[0]表示第一个元素。

  • 多维数组:

C语言支持多维数组,最常见的是二维数组,例如:
int matrix[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};

  • 数组在内存中的存储:

数组在内存中是连续存储的。对于一维数组,元素按顺序存放。对于多维数组,按行优先顺序存放(第一行、第二行)。

  • 数组名:

数组名代表数组首元素的地址。例如,对于数组int a[10];,a等同于&a[0]。

  • 数组的长度:

可以使用sizeof运算符来计算数组的长度(以元素个数计):
int length = sizeof(numbers) / sizeof(numbers[0]);

  • 数组作为函数参数:

当数组作为函数参数传递时,实际上传递的是数组首元素的地址(指针),因此函数内部无法通过sizeof来获取数组长度,通常需要将长度作为另一个参数传递。

  • 注意事项:

数组索引从0开始,到数组大小减1结束。访问数组时不能越界,否则会导致未定义行为。

数组的大小必须是编译时常量(C99之前)或者可以使用变量长度数组(C99标准,但部分编译器可能不支持)。

数组的基本概念

定义:数组是一组相同类型数据的集合,这些数据在内存中连续存储,通过索引(下标)来访问各个元素。

数组的声明和初始化

一维数组

// 声明一个包含5个整数的数组
int numbers[5];// 声明并初始化
int numbers[5] = {1, 2, 3, 4, 5};// 自动确定数组大小
int numbers[] = {1, 2, 3, 4, 5};  // 编译器会自动计算大小为5// 部分初始化
int numbers[5] = {1, 2};  // 前两个元素为1和2,其余为0

多维数组

// 二维数组(矩阵)
int matrix[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}
};// 三维数组
int cube[2][2][2] = {{{1, 2}, {3, 4}},{{5, 6}, {7, 8}}
};

数组的操作

访问数组元素

int arr[5] = {10, 20, 30, 40, 50};// 访问单个元素
printf("第一个元素: %d\n", arr[0]);  // 输出: 10
printf("第三个元素: %d\n", arr[2]);  // 输出: 30// 修改数组元素
arr[1] = 25;  // 将第二个元素改为25

遍历数组

#include <stdio.h>int main()
{int arr[5] = {1,2,3,4,5};for(int i = 0;i < sizeof(arr)/sizeof(arr[0]);i++){printf("arr[%d] = %d\n",i,arr[i]);}printf("Hello World!\n");return 0;
}

数组作为函数参数

传递数组给函数

#include <stdio.h>//函数接受数组作为参数
void printArray(int arr[],int size)
{for(int i = 0;i < size;i++){printf("arr[%d] = %d ",i,arr[i]);}printf("\n");
}int main()
{int arr[5] = {1,2,3,4,5};printArray(arr,5);printf("Hello World!\n");return 0;
}

字符数组(字符串)

在C语言中,字符串通常用字符数组表示:

#include <stdio.h>
#include <string.h>int main()
{//字符数组表述字符串char str1[10] = "hello";char str2[] = "world";printf("字符串1:%s\n",str1);printf("字符串2:%s\n",str2);printf("Hello World!\n");return 0;
}

动态内存分配与数组

#include <stdio.h>
#include <string.h>int main()
{int size;printf("请输入数组大小:");scanf("%d",&size);//动态分配数组int *dynamicArray = (int *)malloc(size *sizeof(int));if(dynamicArray == NULL){printf("内存分配失败");return 1;}//使用动态数组for(int i = 0;i < size;i++){dynamicArray[i] = i*10;}//打印数组for(int i = 0;i < size;i++){printf("dynamicArray[%d] = %d\n",i,dynamicArray[i]);}//释放内存free(dynamicArray);printf("Hello World!\n");return 0;
}

在这里插入图片描述

示例:数组排序

#include <stdio.h>//冒泡排序
void bubbleSort(int arr[],int size)
{for(int i = 0;i < size - 1;i++){for(int j = 0;j < size - i - 1;j++){if(arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}int main()
{int numbers[] = {63,43,25,12,22,11,90};int size = sizeof(numbers)/sizeof(numbers[0]);printf("排序前:");for(int i = 0;i < size;i++){printf("%d ",numbers[i]);}printf("\n");bubbleSort(numbers,size);printf("排序后:");for(int i = 0;i < size;i++){printf("%d ",numbers[i]);}printf("\n");printf("Hello World!\n");return 0;
}
http://www.dtcms.com/a/512688.html

相关文章:

  • DeepSeek-OCR可能成为开启新时代的钥匙
  • C++11:可变参数模板,lambda,function包装器
  • 商城网站建设要多少钱域名备案查询最新消息
  • 企业网站优化的方式我的家乡ppt模板免费下载
  • 算法-每日一题(DAY18)多数元素
  • 清远专业网站建设服务阿里云个人网站制作
  • 河北省保定市唐县城乡建设网站wordpress仿异次元下载页
  • springboot优雅停止的流程梳理
  • 音视频开发远端未发布视频占位图
  • 贵阳网站开发推荐你的网站赚钱吗
  • 上海备案证查询网站查询网站查询系统桂林论坛网站建设
  • QT6中三种设置控件及窗口大小的函数
  • 现在的网站前端用什么做综合返利商城网站建设
  • 河南省建设厅网网站首页没备案的网站收录
  • 织梦网站标题被改学校招生网络营销方案
  • 从0到1:如何用统计学“看透”不同睡眠PSG数据集的差异(域偏差分析实战)
  • 如何做淘宝优惠卷网站网站业务员怎么给客户做方案
  • 网站空间后台登录长沙seo服务
  • 灵敏度、稳定性、便携性三重突破——小吉BL-08plus为何成禽病防控新标配?
  • ubuntu 中使用 lftp 命令行工具传输文件
  • 推荐5款中文打字速度测试软件:无需下载即可使用
  • 网站建设基础服务wordpress polling
  • 长春 网站 设计公司wordpress 权限
  • 什么在线做动图的网站比较好织梦调用wordpress
  • 用 Python 给 Amazon 做“全身 CT”——可量产、可扩展的商品详情爬虫实战
  • 开箱即用,15分钟极速部署:富唯智能精密仪器搬运机器人重塑工业自动化
  • 网站建设个人实训报告seo免费入门教程
  • 一个服务器下怎么做两个网站吗网站上海备案查询系统
  • STM32实现呼吸灯效果原理
  • 做营销网站要多少钱网站开发平台建设