C语言基础(四)

C语言基础

  • 一维数组
    • 数组初始化
      • 全部初始化
      • 部分初始化
      • 数组的默认值
      • 冒泡排序
    • 字符数组
  • 二维数组
      • 初始化
        • 行数是否可省略
        • 列数是否可以省略
        • 部分初始化
      • 访问
      • 二维字符数组
  • 函数
    • 分类
      • 库函数
      • 自定义函数
      • 调用自定义函数
      • 函数声明

一维数组

概念:一组数据类型相同的元素的集合

<存储类型>  数据类型  数组名[元素个数];
				int 	arr[5]

arr的数据类型是int[5]
存储类型:auto static extern register
特点:
1、元素的数据类型相同
2、地址连续
在这里插入图片描述
打印地址的格式化符——%p
数组的数据类型——去掉变量名,剩下的就是数据类型

int arr[4] //开辟16字节空间,数组中的元素是Int类型,给这片空间起名字叫arr
int brr[6]
两个数组的数据类型不同

在这里插入图片描述
数组所占大小 = 元素个数*sizeof(元素的数据类型)
数组名的特点:
1、代表数组首元素的地址
2、代表整个数组

在这里插入图片描述
数组元素的个数必须是整数,不能是浮点数,数组元素个数必须是一个确定的值,不能是一个变量

数组初始化

全部初始化

int arr[5] = {1, 2, 3, 4, 5};//全部初始化方法一
int brr[] = {1, 2, 3, 4, 5, 6};//全部初始化方法二

在定义数组的时候,给所有元素进行赋值。
只有在全部初始化的时候,才能省略元素个数,此时元素个数由输入决定。
在这里插入图片描述

部分初始化

在定义数组的时候,给所有元素进行赋值。
未初始化的部分为0
在这里插入图片描述

int arr[6] = {0};//清零

数组的默认值

  • 局部变量的数组不初始化,其值为随机值
  • static修饰的局部变量的数组不初始化,其值为0
  • 全局变量的数组不初始化,其值为0、

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

冒泡排序

从左到右,依次比较,如果前一个元素比后一个元素大,需要互换位置,反之元素位置不变
在这里插入图片描述
在这里插入图片描述

字符数组

存储元素类型为字符的集合
每一个元素的数据的类型为char

<存储类型> 数据类型 数组名[元素个数];
			char	 str[5];
//分配5个大小为1字节的空间,给这片空间起名为str
  • 特点:1 地址连续 2 元素的数据类型相同
  • 计算字符数组所占空间大小 = sizeof(char) * 元素个数
  • 字符数组以’\0’为结束符
  • 字符数组的本质为字符串,打印字符串的格式化符%s

字符串输出输入函数和字符串处理函数

二维数组

  • 数组:一组数据类型相同的元素的集合
  • 二维数组:一组元素集合在一起(元素:一维数组)——一组一位数组放在一起组成一个大组,就叫二维数组
  • 本质:元素为一位数组的数组
  • 地址连续,数据类型相同

在这里插入图片描述

<存储类型> 数据类型 数组名[行数][列数];
int arr[2][3];
//定义了一个二维数组,该数组有2个元素,每一个元素都是一个有3个int类型元素的一维数组。
//行数:有几个一维数组(二维数组有几个元素)
//列数:一维数组有几个元素

存储类型 auto static register extern

二维数组所占内存空间大小 = sizeof(最里面元素的数据类型) * 行数 * 列数

初始化

int arr[2][3] = {1, 2, 3, 4, 5, 6};
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int brr[3][2] = {{1, 2}, {3, 4}, {5, 6}};
int brr[3][2] = {1, 2, 3, 4, 5, 6};
行数是否可省略
int arr[][3] = {1, 2, 3, 4, 5, 6, 7};

可以,因为确认了一维数组中最里面元素的个数,所以编译器在此时可以计算一维数组的个数,所以可以省略

列数是否可以省略
int arr[2][] = {1, 2, 3, 4, 5};

不可以省略,会产生歧义
总结:二维数组在初始化的时候,行数可以省略,列数不可以省略

部分初始化
int arr[2][3] = {1,2};
int arr[2][3] = {{1}, {4, 5}};

访问

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

二维字符数组

<存储类型> 数据类型 数组名[行数][列数];
char str[2][3];
//定义了一个二维字符数组,该二维字符数组有2个元素,每一个元素都是一个有3个char类型元素的一维数
组。
//行数:有几个一维数组
//列数:一维数组有几个元素

二维字符数组所占空间大小 = sieof(char) * 行数 * 列数
在这里插入图片描述

函数

概念:具有一定功能的模块代码
为什么要有函数?

  1. 提高代码复用率
  2. 可以让程序变得模块化

分类

库函数

printf scanf strlen strcpy gets
//使用时候需要添加头文件
#include <stdio.h>
#include <string.h>

自定义函数

<存储类型> 数据类型 函数名(形式参数列表);
//存储类型:auto static register extern
//数据类型:返回值的数据类型(函数本身是一段功能代码,没有数据类型这个概念,其数据类型由函数返回
值体现)
//函数名:见名知意,命名规范和标识符相同
//形式参数列表:实现什么功能,需要什么参数(需要注意参数个数和类型)(列表:表示形参数量可以有多)
//函数体:实现功能的代码
//返回值:如果函数没有返回值,就不需要写return,数据类型就是void。返回值有且只有一个。

调用自定义函数

函数名(实际参数)

注意:

  1. 实参的数据类型和个数必须和形参一一对应(调用的时候是将实际参数的值传给形式参数)
  2. 实参可以是一个变量、常量、表达式,必须是一个确定的值
  3. 实际参数和形式参数是两片独立空间
  4. 传参实际上是将实参的值拷贝给形参
  5. 形参是局部变量,在函数调用的时候被定义(开辟空间),函数调用结束之后释放空间

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

函数声明

如果自定义的函数在main函数之后,就需要加上声明
将函数定义的那一行复制到main之前,加上分号,组成函数声明
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算点到线的距离(友元)

计算点到直线的距离。类定义的基本要求&#xff1a; 定义一个点类Point&#xff0c;包含有2 个私有数据成员x和y,表示点的坐标&#xff1b;一个构造函数。定义一个直线类Line&#xff0c;包含有3 个私有数据成员a,b和c&#xff0c;表示直线方程axbyc 0&#xff1b;一个构造函数…

[大模型]# Yi-6B-Chat Lora 微调

Yi-6B-Chat Lora 微调 概述 本节我们介绍如何基于 transformers、peft 等框架&#xff0c;对 Yi-6B-Chat 模型进行 Lora 微调。Lora 是一种高效微调方法&#xff0c;深入了解其原理可参见博客&#xff1a;知乎|深入浅出Lora。 本节所讲述的代码脚本在同级目录 04-Yi-6B-Chat…

ThignsBoard通过服务端订阅共享属性

MQTT基础 客户端 MQTT连接 通过服务端订阅属性 案例 1、首先需要创建整个设备的信息&#xff0c;并复制访问令牌 ​​2、通过工具MQTTX连接上对应的Topic 3、测试链接是否成功 4、在MQTT上订阅对应的Topic 5、在客户端添加共享属性信息 6、查看整个设备的遥测数据 M…

数据库(2)

目录 6.buffer pool,redo log buffer和undo logo&#xff0c;redo logo,bin log概念以及关系&#xff1f; 7.从准备更新一条数据到事务的提交的流程描述&#xff1f; 8.能说下myisam和innodb的区别吗&#xff1f; 9.说下MySQL的索引有哪些吧&#xff1f; 10.什么是B树&…

基于Pytorch实现图像分类——基于jupyter

分类任务 网络基本构建与训练方法&#xff0c;常用函数解torch.nn.functional模块nn.Module模块 MNIST数据集下载 from pathlib import Path import requestsDATA_PATH Path("data") PATH DATA_PATH / "mnist"PATH.mkdir(parentsTrue, exist_okTrue)U…

vue3中使用webstocket

1.在项目中创建webstocket.ts文件 export default class SocketService {// 单例static instance null;static get Instance() {if (!this.instance) {this.instance new SocketService();}return this.instance;}// 和服务端连接的socket对象ws null;// 存储回调函数callB…

202206青少年软件编程(scratch图形化) 等级考试试卷(四级)

第1题&#xff1a;【 单选题】 执行下列程序&#xff0c; 说的内容是&#xff1f; &#xff08; &#xff09; A:使 B:命 C:初 D:心 【正确答案】: D 【试题解析】 : 注意标点符号也是一个字符&#xff0c; 连接后字符串是“牢记使命&#xff01; 不忘初心&#xff0c; …

宝藏免费音乐软件LX music

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 宝藏免费音乐软件LX music 前言LX Music的特色功能&#xff1a;音乐播放的新境界安装与配置&#xff1a;在不同平台上使用LX Music下载页面 主题定制 本文将深入研究LX Music&#xff0c;一款备受欢迎…

pytorch车牌识别

目录 使用pytorch库中CNN模型进行图像识别收集数据集定义CNN模型卷积层池化层全连接层 CNN模型代码使用模型 使用pytorch库中CNN模型进行图像识别 收集数据集 可以去找开源的数据集或者自己手做一个 最终整合成 类别分类的图片文件 定义CNN模型 卷积层 功能&#xff1a;提…

opencv基础图行展示

"""试用opencv创建画布并显示矩形框&#xff08;适用于目标检测图像可视化&#xff09; """ # 创建一个黑色的画布&#xff0c;图像格式(BGR) img np.zeros((512, 512, 3), np.uint8)# 画一个矩形&#xff1a;给定左上角和右下角坐标&#xff0…

Redis入门到通关之Hash命令

文章目录 ⛄介绍⛄命令⛄RedisTemplate API❄️❄️添加缓存❄️❄️设置过期时间(单独设置)❄️❄️添加一个Map集合❄️❄️提取所有的小key❄️❄️提取所有的value值❄️❄️根据key提取value值❄️❄️获取所有的键值对集合❄️❄️删除❄️❄️判断Hash中是否含有该值 ⛄…

文献阅读:猕猴的单个基底外侧杏仁核神经元表现出与额叶皮层不同的连接模式

文献介绍 「文献题目」 Single basolateral amygdala neurons in macaques exhibit distinct connectional motifs with frontal cortex 「研究团队」 Peter H. Rudebeck&#xff08;美国西奈山伊坎医学院&#xff09; 「发表时间」 2023-10-18 「发表期刊」 Neuron 「影响因…

Springboot+Vue项目-基于Java+MySQL的母婴商城系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Ubuntu去除烦人的顶部【活动】按钮

文章目录 一、需求说明二、打开 extensions 网站三、安装 GNOME Shell 插件四、安装本地连接器五、安装 Hide Activities Button 插件六、最终效果七、卸载本地连接器命令参考 本文所使用的 Ubuntu 系统版本是 Ubuntu 22.04 ! 一、需求说明 使用 Ubuntu 的过程中&#xff0c;屏…

【大语言模型】应用:10分钟实现搜索引擎

本文利用20Newsgroup这个数据集作为Corpus(语料库)&#xff0c;用户可以通过搜索关键字来进行查询关联度最高的News&#xff0c;实现对文本的搜索引擎&#xff1a; 1. 导入数据集 from sklearn.datasets import fetch_20newsgroupsnewsgroups fetch_20newsgroups()print(fNu…

在Linux驱动中,如何确保中断上下文的正确保存和恢复?

大家好&#xff0c;今天给大家介绍在Linux驱动中&#xff0c;如何确保中断上下文的正确保存和恢复&#xff1f;&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 在Linux驱动中&am…

AI图书推荐:如何在课堂上使用ChatGPT 进行教育

ChatGPT是一款强大的新型人工智能&#xff0c;已向公众免费开放。现在&#xff0c;各级别的教师、教授和指导员都能利用这款革命性新技术的力量来提升教育体验。 本书提供了一个易于理解的ChatGPT解释&#xff0c;并且更重要的是&#xff0c;详述了如何在课堂上以多种不同方式…

STM32利用软件I2C通讯读MPU6050的ID号

今天的读ID号是建立在上篇文章中有了底层的I2C通讯的6个基本时序来编写的。首先需要完成的就是MPU6050的初始化函数 然后就是编写 指定地址写函数&#xff1a; 一&#xff1a;开始 二&#xff1a;发送 从机地址读写位&#xff08;1&#xff1a;读 0&#xff1…

MySQL之索引失效、覆盖、前缀索引及单列、联合索引详细总结

索引失效 最左前缀法则 如果索引了多列(联合索引)&#xff0c;要遵守最左前缀法则&#xff0c;最左前缀法则指的是查询从索引的最左列开始&#xff0c;并且不跳过索引中的列。如果跳跃某一列&#xff0c;索引将部分失效&#xff08;后面的字段索引失效&#xff09;。 联合索…

第1章 计算机网络体系结构

王道学习 【考纲内容】 &#xff08;一&#xff09;计算机网络概述 计算机网络的概念、组成与功能&#xff1b;计算机网络的分类&#xff1b; 计算机网络的性能指标 &#xff08;二&#xff09;计算机网络体系结构与参考模型 计算机网络分层结…