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.hqwc.cn/news/617078.html

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

相关文章

家庭网络防御系统搭建-虚拟机安装siem/securityonion网络连接问题汇总

由于我是在虚拟机中安装的security onion&#xff0c;在此过程中&#xff0c;遇到很多的网络访问不通的问题&#xff0c;通过该文章把网络连接问题做一下梳理。如果直接把securityonion 安装在物理机上&#xff0c;网络问题则会少很多。 NAT无法访问虚拟机 security onion虚拟…

Mapmost Alpha:开启三维城市场景创作新纪元

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【详细教程】MySQL 高可用架构代码实现

前言 对于 MySQL 数据库作为各个业务系统的存储介质&#xff0c;在系统中承担着非常重要的职责&#xff0c;如果数据库崩了&#xff0c;那么对于读和写数据库的操作都会受到影响。如果不能迅速恢复&#xff0c;对业务的影响是非常大的。之前 B 站不是出过一次事故么&#xff0…

网络篇05 | 应用层 http/https

网络篇05 | 应用层 http/https 01 HTTP请求报文协议&#xff08;Request&#xff09;1&#xff09;Request简述2&#xff09;请求行&#xff08;首行&#xff09;3&#xff09;请求头&#xff08;Request Headers&#xff09;4&#xff09;空行5&#xff09;正文&#xff08;Re…

每日一题(leetcode238):除自身以外数组的乘积--前缀和

不进阶是创建两个数组&#xff1a; class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int nnums.size();vector<int> left(n);vector<int> right(n);int mul1;for(int i0;i<n;i){mul*nums[i];left[i]mul;}mul1;for…

【论文速读】| 基于大语言模型的模糊测试技术

本次分享论文为&#xff1a;Large Language Models Based Fuzzing Techniques: A Survey 基本信息 原文作者&#xff1a;Linghan Huang, Peizhou Zhao, Huaming Chen, Lei Ma 作者单位&#xff1a;悉尼大学&#xff1b;东京大学&#xff1b;阿尔伯塔大学 关键词&#xff1a;…

IDEA Warnings:SQL dialect is not configured.

springboot项目XxxMapper.xml文件打开后显示warnings&#xff1a;SQL dialect is not configured......&#xff08;翻译&#xff1a;未配置SQL语言。&#xff09; 大概意思是没有在IDEA中配置当前sql是MySQl、Oracle还是MariaDB等语言。 配置一下就好&#xff1a; 完了&#…

Textarea的常用属性thymeleaf

文章目录 textareathymeleaf1.基础使用2.代码块的切换3.链接表达式1&#xff09;范例 4.前后端5.遍历1.th:each2.th:switch3.添加属性 组件替换 每周总结 textarea -webkit-scrollbar&#xff1a;width&#xff1a;0&#xff1b;让滚动条隐藏&#xff0c;宽度为0 resize&#x…

Linux第90步_异步通知实验

“异步通知”的核心就是信号&#xff0c;由“驱动设备”主动报告给“应用程序”的。 1、添加“EXTI3.c” #include "EXTI3.h" #include <linux/gpio.h> //使能gpio_request(),gpio_free(),gpio_direction_input(), //使能gpio_direction_output(),gpio_get_v…

本地web项目启起来后,无法在浏览器(chrome)看到源码,从而无法打断点;Framework Ignore list

问题描述 本地web项目启起来后&#xff0c;无法在浏览器(chrome)看到源码&#xff0c;从而无法打断点 其他浏览器没看&#xff0c;开发环境一致专注于chrome&#xff08;其余浏览器有测试同事提缺陷了&#xff0c;才会去看&#xff09;&#xff0c;其余浏览器有没有这个问题&…

Docker Redis Debian服务器版

Debian安装docker 1.使用官方脚本自动安装docker 安装命令如下&#xff1a; curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh 如果安装提示 -bash sudo command not found 则需要 #update sudo apt-get update sudo apt-get install sudo再执行…

基于FPGA的以太网相关文章导航

首先需要了解以太网的一些接口协议标准&#xff0c;常见的MII、GMII、RGMII时序&#xff0c;便于后续开发。 【必读】从MII到RGMII&#xff0c;一文了解以太网PHY芯片不同传输接口信号时序&#xff01; 介绍一款比较老的以太网PHY芯片88E1518&#xff0c;具有RGMII接口&#xf…