c语言中的数组

数组

数组是一种构造类型,是由基本类型构造而成。当我们想用一群变量来描述同一类相同的东西时候,比如100个年龄变量,我们可以这样int age1;int age2;int age3;……int age 100;这样即不方便书写,也不方便管理,此时数组就出现了,int age[100]就能搞定。

构造类型带来了书写和管理的方便。接下来我们要研究其定义,大小,初始化和访问。

2.1 基本语法

在这里插入图片描述
在这里插入图片描述

2.1.1 数组的使用(重点)
2.1.2 数组的初始化
  • 在定义数组的同时进行赋值,称为初始化
  • 全局数组若不初始化,编译器将其初始化为零
  • 局部数组若不初始化,内容为随机值

凡是构造类型,要么在初始化的时候初始化, 要么对集合中的每个元素单独初始化。定义以后,不可以再以初始化的方式初始化。凡是基础数据类型,既可以在定义的时候初始化,也可以先定义后初始化。
在这里插入图片描述

2.1.3 数组名
  • 数组名是一个地址的常量,代表数组中首元素的地址
  • 一维数组在内存中是一组连续的存储空间。
    在这里插入图片描述

2.2 数组案例

2.2.1 一维数组的最大值

在这里插入图片描述
2.2.2 一维数组的逆置
在这里插入图片描述### 2.3 数组和指针

2.3.1 通过指针操作数组元素(重点)
  • 数组名字是数组的首元素地址,但它是一个常量
  • * 和 [] 效果一样,都是操作指针所指向的内存
    在这里插入图片描述
 1.数组名是一个常量,不允许重新赋值。2.指针变量是一个变量,可以重新赋值。3.p+i 和 array+i 均表示数组元素 array[i]的地址,均指向 array[i]4.*(p+i)和*(array+i)均表示 p+i 和 array+i 所指对象的内容 array[i]。5.*p++:等价于*(p++)。其作用:先得到*p,再使 p=p+1。
#include <stdio.h>int main() {int array[10] = { 1,2,3,4,65,6,12,13,14,15 };int* p = &array;printf("array=== %p\n", &array);printf("p    === %p\n", p);int len = sizeof(array) / sizeof(array[0]);for (int i = 0; i < len; i++){// array+i 和p+i  指向的都是地址  array[i]的地址// *(array+i) 和*(p+i) 指向的内容  ====array[i]// printf("arr[%d]  =  %d\n", i, array[i]);// printf("arr[%d]  =  %d\n", i, *(array + i));// printf("arr[%d]  =  %d\n", i, *(p + i));// *(p++)  == *p++  先获取*p  p=p+1// printf("arr[%d]  =  %d\n", i, *(p++));printf("arr[%d]  =  %d\n", i, *p++);/* code */}return 0;
}
2.3.2 指针数组
  • 指针数组,它是数组,数组的每个元素都是指针类型
    在这里插入图片描述
2.3.3 数组名做函数参数
  • 数组名做函数参数,函数的形参本质上就是指针
    在这里插入图片描述

2.4 字符数组与字符串

2.4.1 字符数组与字符串区别(重点)
  • C语言中没有字符串这种数据类型,可以通过char的数组来替代
  • 数字0(和字符 ‘\0’ 等价)结尾的char数组就是一个字符串,字符串是一种特殊的char的数组
  • 在这里插入图片描述
    如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组
    在这里插入图片描述
2.4.2 字符指针(重点)
  • 字符指针可直接赋值为字符串,保存的实际上是字符串的首地址

  • 这时候,字符串指针所指向的内存不能修改,指针变量本身可以修改
    在这里插入图片描述

2.4.3 字符串常用库函数
strlen

在这里插入图片描述
strcpy
在这里插入图片描述
strcat
在这里插入图片描述
strcmp
在这里插入图片描述

2.4.4 字符串案例
  • 需求:自定义一个函数my_strlen(),实现的功能和strlen一样
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/636870.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux开发 第九篇】磁盘分区

Linux磁盘分区 磁盘分区 Linux分区是用来组成整个文件系统的一部分 Linux采用了一种叫载入的处理方法&#xff0c;它的整个文件系统中包括了一整套的文件和目录&#xff0c;且将一个分区和一个目录联系起来&#xff0c;这时要载入的一个分区将使它的存储空间开一个目录下获得…

便携的图像背景去除工具PhotoScissors9.2版本在Windows系统的下载与安装配置

目录 前言一、PhotoScissors安装二、使用配置总结 前言 ​“ PhotoScissors是一个多功能和强大的照片编辑工具&#xff0c;专门为Windows用户寻求一个直观的解决方案&#xff0c;背景删除和图像编辑。作为专用的Windows软件&#xff0c;PhotoScissors提供了一个用户友好的平台…

Error in render: TypeError: Cannot read properties of undefined (reading‘‘)

报错内容 报错解释&#xff1a;这个错误在渲染过程中尝试读取一个未定义&#xff08;undefined&#xff09;对象的某个属性时发生了TypeError。具体来说&#xff0c;是尝试读取一个值为undefined的对象的某个属性&#xff0c;但该属性不存在&#xff0c;因此无法读取。解决过程…

【剪映专业版】15绿幕抠图:应用技巧、注意事项

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 1.绿幕抠图 背景为绿色的素材&#xff08;其他颜色也可以扣取&#xff0c;只是绿色背景更普遍、抠图效果更好&#xff09; 选择色度抠图&#xff0c;通过取色器选取背景颜色&#xff0c;调整强度实现抠图 剪映的色度抠…

三维天地低代码平台实现客户需求的快速交付与灵活定制

— 款合格的低代码平台应具备架构稳定、 产品质量高、 交付速度快、 运维简便的特点, 能快速实现业务需求到系统功能落地。 二十余年来, 北京三维天地科技股份有限公司一直专注于实验室信息化管理 领域, 旗下 SW- LIMS 已在化工、 环保、 食品、 科研等二十余个行业广泛应用,服…

机器学习和深度学习 -- 李宏毅(笔记与个人理解)Day19

Day 19 Recurrent Neural Network &#xff08;RNN 1&#xff09; md 发现我最近需要恶补一下vue的技术……服了&#xff08;因为有两个项目要交单子了&#xff09; 好吧导致我停更新两天的DL&#xff0c;我去如坐针毡啊&#xff01;今天补上 Slot Filling 将词语用向量的形式来…

【QT进阶】Qt http编程之http相关类的简单介绍

往期回顾 【QT进阶】Qt Web混合编程之实现ECharts数据交互动态修改-CSDN博客 【QT进阶】Qt http编程之http与https简单介绍-CSDN博客 【QT进阶】Qt http编程之后端API测试工具postman使用介绍-CSDN博客 【QT进阶】Qt http编程之http相关类QNetworkAccessManager与QNetworkReque…

如何设置unbuntu时间及同步时间

文章目录 时区时间同步与服务 时间同步的重要性Ubuntu系统中设置时间和同步时间方法一&#xff1a;通过图形界面设置查看当前时间设置时间和时区设置时区&#xff08;假设设置为UTC&#xff09;&#xff1a;设置本地时间&#xff08;例如&#xff0c;设置时间为2024年4月21日 1…

HTML不常用的文本标签

1.标签如下&#xff1a; 代码及相关内容 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>不常用的文…

OpenCV杂记(1):绘制OSD(cv::getTextSize, cv::putText)

1. 简述 我们使用OpenCV时&#xff0c;有时会在图像的某个位置绘制OSD信息&#xff0c;如绘制一些字符串作为指示信息。 本文将简要介绍在图像&#xff08;cv::Mat&#xff09;上绘制固定的字符串信息。 2. 使用的API &#xff08;1&#xff09;cv::getTextSize() CV_EXPORT…

网址注册流程

从选择域名到完成注册 在互联网时代&#xff0c;拥有一个独特的网址是建立个人品牌或企业形象的重要一环。然而&#xff0c;对于许多人来说&#xff0c;网址注册流程可能显得有些复杂。本文将详细介绍网址注册的全过程&#xff0c;帮助您顺利完成注册&#xff0c;拥有自己的专属…

【python】Paste Mask

学习来自【OpenCv】利用roi 掩模 将一张图片添加到另一张上 任务描述&#xff1a;提取图片A的 mask 区域&#xff0c;并粘贴到图片B上 文章目录 1 代码实现2 结果展示3 涉及到的库cv2.bitwise_notcv2.bitwise_andcv2.add 附录——获取 mask 的边界框 1 代码实现 A 图 A 图的 …