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之前,加上分号,组成函数声明
在这里插入图片描述

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

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

相关文章

算法中二分搜索详解

文章目录 在有序数组中找num是否存在实现思路实现代码(里面运用了对数器)在有序数组中找>num的最左位置实现思路代码实现 在有序数组中找<num的最右位置实现思路实现代码 二分搜索不一定发生在有序数组上(比如寻找峰值问题)题目描述实现思路实现代码 在有序数组中找num是…

无人机巡检技术革命性变革光伏电站运维管理

在中国广袤的大地上&#xff0c;光伏电站如雨后春笋般崛起&#xff0c;晶体硅组件板在阳光下熠熠生辉&#xff0c;为人们带来了源源不断的绿色能源。然而&#xff0c;随着光伏产业的迅猛发展&#xff0c;电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入&#xff0c;…

Kotlin 面试题

lifecycleScope.launchWhenResumed launchWhenResumed是一个扩展函数,它是LifecycleCoroutineScope的一部分,并且它是在Android的Lifecycle库中引入的。 这个函数的主要目的是在Lifecycle的对应组件(通常是Activity或Fragment)处于“resumed”状态时启动协程。 public fun …

Vue项目(H5)与微信小程序来回跳转

新建H5页面 在小程序里面新建一个名为H5的文件夹&#xff0c;以及H5页面 H5.WXML <web-view src"{{h5Url}}" bindmessage"handleGetMessage"></web-view>H5.JSdata: { h5Url:https://xxx.com/login 要跳转的H5页面},H5回来的回调方法handleG…

【Unity+Python】如何通过Socket进行通信

1、Unity端创建名为UnityClient.cs脚本代码(客户端)&#xff1a; 注意&#xff1a;unity的规则中类&#xff0c;名和脚本文件名需要相同。 using System.Net.Sockets; using System.Text; using UnityEngine;public class UnityClient : MonoBehaviour {TcpClient client;Netw…

TypeScript 忽略红色波浪线

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

CNN-Transformer时间序列预测

部分代码&#xff1a; # CNN-Transformer class CNNTransformerEncoder(nn.Module):def __init__(self, input_features, transformer_encoder_heads,embedding_features, cnn_kernel_size, dim_feedforward_enc, n_encoder_layer):super(CNNTransformerEncoder, self).__init…

数模 初见数建

文章目录 初见数学建模1.1 数学建模是什么1.2 数学建模的概述1.3 如何学习数学建模---分模块化1.4 数学建模前提了解1.5 数学建模的六个步骤1.6 如何备战建模比赛1.7 数学建模赛题类型1.8 数学建模算法体系概述 初见数学建模 1.1 数学建模是什么 1.原型与模型 原型&#xff…

ssm048电子竞技管理平台的设计与实现+jsp

电子竞技管理平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电子竞技管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

Docker之自定义镜像上传至阿里云

一、Alpine介绍 Alpine Linux是一个轻量级的Linux发行版&#xff0c;专注于安全、简单和高效。它采用了一个小巧的内核和基于musl libc的C库&#xff0c;使得它具有出色的性能和资源利用率。 Alpine Linux的主要特点包括&#xff1a; 小巧轻量&#xff1a;Alpine Linux的安装…

【新版】系统架构设计师 - 知识点 - 面向对象开发方法

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 知识点 - 面向对象开发方法面向对象开发方法面向对象的分析需求模型分析模型 面向对象的设计 用例模型关系、UML事务关系、类的关系 架构 - 知识点 - 面向对象开发方法 面向对象开发方法 分析阶段…

<-泛型->

1.泛型的概念 所谓泛型&#xff0c;就是允许在定义类, 接口 时通过一个"标识"表示类中某个属性的类型或者某个方法的返回值或形参类型.这个类型参数将在使用时确定. 2.举例 (1). 集合类在设计阶段/声明阶段不能确定这个容器到底存的是什么对象&#xff0c;所以在JDK…

微信小程序制作圆形进度条

微信小程序制作圆形进度条 1. 建立文件夹 选择一个目录建立一个文件夹&#xff0c;比如 mycircle 吧&#xff0c;另外把对应 page 的相关文件都建立出来&#xff0c;包括 js&#xff0c;json&#xff0c;wxml 和 wxcc。 2. 开启元件属性 在 mycircle.json中开启 component 属…

Vscode远程连接遇到的一些问题

问题&#xff1a; 由于之前报错图片没有保存&#xff0c;所以只有文字描述一下&#xff1a; 1、无法与192.168.8.210建立连接&#xff1a;Vscode服务器启动失败 2、无法与192.168.8.210建立连接&#xff1a;无法安装Vscode服务器 解决方法&#xff1a; 方法一&#xff1a…

Vue输入框/选择框新增状态可编辑,修改状态不可编辑

新增和编辑同页面&#xff0c;新增没有传参&#xff0c;修改状态不可编辑。 在这里我用选择框举例。 思路&#xff1a; 在新增/修改页&#xff0c;先判断是哪种状态&#xff0c;再根据状态不同&#xff0c;选择是否禁用某个选择框。 判断是否有传参&#xff0c;有传参即为修…

baichuan 2模型使用的注意事项

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

51蓝桥杯之DS18B20

DS18B20 基础知识 代码流程实现 将官方提供例程文件添加到工程中 添加onewire.c文件到keil4里面 一些代码补充知识 代码 #include "reg52.h" #include "onewire.h" #include "absacc.h" unsigned char num[10]{0xc0,0xf9,0xa4,0xb0,0x99,…

Unity WebGL Release-Notes

&#x1f308;WebGL Release-Notes 收集的最近几年 Unity各个版本中 WebGL的更新内容 &#x1f4a1;WebGL Release-Notes 2023 &#x1f4a1;WebGL Release-Notes 2022 &#x1f4a1;WebGL Release-Notes 2021

随机链表的复制 - LeetCode 热题 32

大家好&#xff01;我是曾续缘&#x1f4a4; 今天是《LeetCode 热题 100》系列 发车第 32 天 链表第 11 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 随机链表的复制 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff…

TPS70401系列双输出、低压差线性稳压器(LDO)的数据手册

这份文件是关于德州仪器(Texas Instruments)公司生产的TPS70401系列双输出、低压差线性稳压器(LDO)的数据手册。这些稳压器专为分压供电系统设计,具有集成的系统电压监控器(SVS)功能,适用于需要高电流输出和低静态电流的应用。 以下是这些低压差线性稳压器的核心特点和…