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,一经查实,立即删除!

相关文章

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

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

【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 属…

51蓝桥杯之DS18B20

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

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

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

【leetcode面试经典150题】28.盛最多水的容器(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

漫步密度森林:借助HDBSCAN实现高效数据聚类

文章来源&#xff1a;navigating-the-density-forest-harnessing-hdbscan-for-advanced-data-clustering 2024 年 4 月 9 日 介绍 在数据科学中&#xff0c;聚类算法是揭示数据集内在结构的重要工具。在这些工具中&#xff0c;基于分层密度的噪声应用空间聚类 (HDBSCAN) 作为…

【C++学习】C++11新特性(第一节)

文章目录 ♫一.文章前言♫二.C11新特性♫一.统一的列表初始化♫二.std::initializer_list♫三.声明♫四.decltype关键字♫五.nullptr♫六.新增加容器---静态数组array、forward_list以及unordered系列♫6.1unordered_map与unoredered_set♫6.2array♫6.3 forward_list&#xff…

【Altium Designer 20 笔记】隐藏PCB上的信号线(连接线)

使用网络类隐藏特定类型的信号线 如果你想要隐藏特定类型的信号线&#xff08;例如电源类&#xff09;&#xff0c;你可以首先创建一个网络类。使用快捷键DC调出对象类浏览器&#xff0c;在Net Classes中右击添加类&#xff0c;并重命名&#xff08;例如为“Power”&#xff0…

centos编译安装nginx1.24

nginx编译1.24&#xff0c;先下载安装包 机器通外网的话配置nginx的yum源直接yum安装 vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org…

fastjson 序列化问题

问题: 使用fastjson 的 对同一个JSONObject对象 多次引用后, 通过 JSON.toJSONString() 方法进行json序列化时出现只有第一次的可以成功序列化未json string 字符串, 后面的对象都为引用地址; 示例: public static void main(String[] args) {JSONObject jsonObject new JSON…

7 个适用于 Windows 的最佳电脑分区数据恢复软件

磁盘分区对于正确存储数据以便从硬盘驱动器快速轻松地访问非常有帮助。但是&#xff0c;如果分区损坏&#xff0c;存储在其中的所有数据都会突然变得无法访问。磁盘分区损坏的原因可能有很多&#xff0c;其中最突出的是病毒攻击、突然断电、物理损坏或由于创建坏扇区。 但是&a…

eNSP-抓包解析TCP三次握手和四次挥手的过程

一、环境搭建 1.设备连接 并 启动所有设备 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果