c语言中的数组

news2024/11/16 3:15:38

数组

数组是一种构造类型,是由基本类型构造而成。当我们想用一群变量来描述同一类相同的东西时候,比如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.coloradmin.cn/o/1612411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPU异构内存管理

通过异构内存管理简化 GPU 应用程序开发 异构内存管理 (HMM) 是一项 CUDA 内存管理功能&#xff0c;它扩展了 CUDA 统一内存编程模型的简单性和生产力&#xff0c;以包括具有 PCIe 连接的 NVIDIA GPU 的系统上的系统分配内存。 系统分配内存是指最终由操作系统分配的内存&#…

深入理解MD5:Message Digest Algorithm 5

title: 深入理解MD5&#xff1a;Message Digest Algorithm 5 date: 2024/4/21 18:10:18 updated: 2024/4/21 18:10:18 tags: MD5哈希函数密码学数据完整性碰撞攻击安全性替代算法 导论 MD5的背景和历史 MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种广泛使用…

Axure引用ECharts图表 解决火狐浏览器出错

Axure原型添加Echarts图表&#xff0c;没耐心看文章的可以直接下载示例 Axure中使用ECharts图表示例 1. 打开Axure新建页面 2. 页面添加元件 元件类型随意&#xff0c;矩形、动态面板、热区、图片 甚至段落都可以3. 命名元件 随意命名&#xff0c;单个页面用到多个图表时名…

dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

安装IntelliJ IDEA

文章目录 一、前言二、下载IDEA三、安装四、破解 一、前言 工欲善其事必先利其器&#xff0c;学习JAVA的第一步&#xff0c;首先是安装IDE&#xff0c;配置环境&#xff1b; 常用的JAVA IDE是IntelliJ IDEA和eclipse&#xff0c;我选择IntelliJ IDEA 二、下载IDEA 官网下载&…

游戏测试之常见控制技能(下)

备注&#xff1a;未经博主允许禁止转载 个人笔记&#xff08;整理不易&#xff0c;有帮助&#xff0c;收藏点赞评论&#xff0c;爱你们&#xff01;&#xff01;&#xff01;你的支持是我写作的动力&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_w…

C++11 数据结构5 队列的概念,队列的顺序存储,实现,测试

一&#xff0c;队列的概念 队列是一种特殊的受限制的线性表。 队列&#xff08;queue&#xff09;是只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表。 队列是一种先进先出的t&#xff08;First In First Out&#xff09;的线性表&#xff0c;简称FIF…

数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418)

数据库管理171期 2024-04-18 数据库管理-第171期 Oracle是用这种方式确保读一致的&#xff08;20240418&#xff09;1 基本概念2 用处3 注意事项总结 数据库管理-第171期 Oracle是用这种方式确保读一致的&#xff08;20240418&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#x…

Redis系列之哨兵Sentinel集群搭建

在上一篇博客&#xff0c;我们已经知道怎么搭建一个redis主从复制集群&#xff0c;但是主从集群如果出现服务器宕机的情况&#xff0c;是不会自动选举master的&#xff0c;所以需要搭建更加高可用的集群模式&#xff0c;哨兵模式&#xff0c;哨兵集群会自动监控&#xff0c;如果…

深度学习发展中的继承和创新

深度学习是一步一步发展而来的&#xff0c;新的成就也是在原有的基础上&#xff0c;逐步取得突破&#xff0c;有一些东西是一点一点变化&#xff0c;突破发展而来的&#xff0c;也就是每一次小的突破和每一次小的突破累积起来&#xff0c;构成一个明显的进步。我们可以通过观察…

python 文件 成绩分析2

‘’’ 文件score.txt中存储了学生的考试信息,内容如下 小明,98,96 小刚,90,94 小红,90,94 小王,98,96 小刘,80,90 小赵,90,96 第二列是数学成绩&#xff0c;第三列是语文成绩 请写程序分析&#xff1a; 哪些同学语文成绩是相同的?哪些同学数学成绩是相同的?哪些同学语文和数…

C语言—字符指针,指针数组和数组指针详解

字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* ; int main() {char ch w;char *pc &ch;*pc w;return 0; }还有一种使用方式如下&#xff1a; int main() {const char* pstr "hello world.";//这里是把一个字符串放到pstr指针变量里了吗…

WebSocket 快速入门 - springboo聊天功能

目录 一、概述 1、HTTP&#xff08;超文本传输协议&#xff09; 2、轮询和长轮询 3、WebSocket 二、WebSocket快速使用 1、基于Java注解实现WebSocket服务器端 2、JS前端测试 三、WebSocket进阶使用 1、如何获取当前用户信息 2、 后端聊天功能实现 一、概述 HTTP…

Linux安装Docker完整教程及配置阿里云镜像源

官网文档地址 安装方法 1、查看服务器内核版本 Docker要求CentOS系统的内核版本高于3.10 uname -r #通过 uname -r 命令查看你当前的内核版本2、首先卸载已安装的Docker&#xff08;如果有&#xff09; 2.1 确保yum包更新到最新 yum update2.2 清除原有的docker&#xff0c…

生物特征识别的六大技术研究

生物特征识别技术是结合了计算机科学与光学、声学、生物传感器以及生物统计学原理&#xff0c;通过利用人体固有的生理特征&#xff08;如指纹、人脸、虹膜、掌纹、指静脉等&#xff09;和行为特征&#xff08;如笔迹、声音、步态等&#xff09;&#xff0c;来进行个人身份的鉴…

layui--table里使用switch

1. 项目需求 在layui.table上面渲染后的列表上面加一个switch开关&#xff0c;监听switch开关的动作&#xff0c;实现本列数据的状态切换&#xff01; 实现效果如下&#xff1a; 2. 实现方式 下面介绍的思路都是利用table的templet模板实现的&#xff0c;不同的在于模板代码…

F-logic DataCube3 SQL注入漏洞复现(CVE-2024-31750)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/pr_monitor/getting_index_data.php 接口处存在SQL注入漏洞,未经身份验证的攻击者可通过该漏洞获取数据库敏感信息,深入利用可控制整个web服务器。 …

JavaEE 初阶篇-深入了解 File 文件操作(实现文件搜索、非空文件夹删除)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 File 文件概述 2.0 创建 File 类对象的方法 2.1 判断文件类型、获取文件信息的方法 2.2 创建文件、删除文件的方法 2.3 遍历文件夹的方法 3.0 文件搜索与删除 3.1…

虚拟机中的打印机,无法打印内容,打印的是白纸或英文和数字,打印不了中文

原因&#xff1a;打印机驱动设置不正确 解决方案&#xff1a; 打开打印机属性 -> 高级 -> 新驱动程序 下一页 -> Windows 更新 耐心等待&#xff0c;时间较长。 选择和打印机型号匹配的驱动&#xff0c;我选择的是&#xff1a; 虽然虚拟机和主机使用的驱动不…

《机器学习by周志华》学习笔记-线性模型-02

1、对数几率回归 1.1、背景 上一节我们考虑了线性模型的回归学习,但是想要做分类任务就需要用到上文中的广义线性模型。 当联系函数连续且充分光滑,考虑单调可微函数,令: 1.2、概念 找一个单调可谓函数,将分类任务的真实标记与线性回归模型的预测值联系起来,也叫做「…