C语言基础知识(36)

news2024/11/15 13:28:17

C语言中的数组和指针有什么区别

数组和指针之间的一个重要区别是数组中元素的地址始终是固定的,不能在执行时修改地址,但对于指针,可以根据需要更改指针的地址。

分支结构

1.简单if语句

C语言中的分支结构语句中的if条件语句。

简单if语句的基本结构如下:

if(表达式)

{

执行代码块;

}

其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。

注意:if()后面没有分号,直接写{}

2.if-else语句

简单的if-else语句的基本结构:

语义是: 如果表达式的值为真,则执行代码块1,否则执行代码块2。

3.多重if-else语句

C语言中多重if-else语句,其结构如下:

语义是:依次判断表达式的值,当出现某个值为真时,则执行对应代码块,否则执行代码块n。

注意:当某一条件为真的时候,则不会向下执行该分支结构的其他语句。

4.嵌套if-else语句

C语言中嵌套if-else语句。嵌套if-else语句的意思,就是在if-else语句中,再写if-else语句。其一般形式为:

C的运算符有以下几种

1、算术运算符(+ - * / %)结合方向自左向右

2、关系运算符(> < =="">= <= !="">

3、逻辑运算符(! && ||)

4、位运算符(<>> ~ | ^ &)

5、赋值运算符(=及符号扩展赋值运算符)

6、条件运算符(? : )

7、逗号运算符( , )

8、指针运算符(* &)

9、求字节运算符(sizeof)

10、强制类型转换运算符((类型))

11、分量运算符( . ->)

12、下标运算符([])

13、其他

下面C语言程序的输出是什么(假设 int 大小为 4 个字节)?

#include<stdio.h>intmain(){int(*arr)[5][4];//Suppose integer size 4 bytesprintf("*arr size %d",sizeof(*arr));return0;}

输出结果为:*arr size 80

解释:

int (*arr)[5][4] 是指向数组的指针。 4*5 的元素总数,如果整数大小为 4 字节,则 *arr 的大小将为 80。

while循环

反复不停的执行某个动作就是江湖人称的循环

C语言中有三种循环结构,先看一下C语言while循环的结构

其中表达式表示循环条件,执行代码块为循环体。

while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体代码块。

while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。

一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。

循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。

什么是静态内存分配和动态内存分配

根据 C 标准,有四种存储持续时间,静态、线程 (C11)、自动和分配。存储期限决定了对象的生命周期。

静态内存分配:

静态分配意味着,一个对象具有外部或内部链接或使用静态存储类声明。它仅在程序启动之前初始化一次,其生命周期贯穿程序的整个执行过程。全局和静态变量是静态内存分配的一个示例。

动态内存分配:

在 C 语言中,有很多用于动态分配内存的库函数(malloc、calloc 或 realloc,..)。动态分配内存的问题之一是它不会被编译器本身破坏,这意味着用户有责任解除分配的内存。

当使用内存管理函数分配内存时,它们返回一个指向已分配内存块的指针,返回的指针指向内存块的起始地址。如果没有可用空间,这些函数将返回一个空指针。

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

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

相关文章

Linux内核驱动初探(一) LVDS显卡

目录 0. 前言 1. menuconfig 2. 编译报错与打补丁 3. 设备树与display-timings 4. 拓展&#xff1a;RGB24 0. 前言 这次的工作主要是把某项目设备上(iMX6DL)的内核版本从 4.19.x 升级到 5.15.32&#xff0c;是作为该项目整个BSP升级计划的一部分。 该内核升级工作移交给…

PX4+Offboard模式+代码控制无人机起飞(Gazebo)

参考PX4自动驾驶用户指南 https://docs.px4.io/main/zh/ros/mavros_offboard_cpp.html 新建ros项目工程 mkdir -p px4_offboard_ws/src接着进入文件编译一下 cd px4_offboard_ws catkin_make进入src目录&#xff0c;创建ros功能包 catkin_create_pkg t1_offboard_rtakeoff …

Springboot+vue基于java的家教管理平台

系统分为用户和管理员&#xff0c;教师三个角色 用户的主要功能有&#xff1a; 1.用户注册和登陆系统 2.查看系统的公告信息 3.用户查看家教教师简历信息 4.用户查看课程信息 5.用户查看招聘教师信息&#xff0c;在线应聘教师 6.用户个人中心修改个人资料&#xff0c;修改密码…

Python数据清洗2

一、函数数据处理 1.在dataframe中使用apply方法&#xff0c;调用自定义函数对数据进行处理 2.可以使用astype函数对数据进行转换 3.可以使用map函数进行数据转换 二、数据分组运算 1.使用groupby方法进行分组计算&#xff0c;得到分组对象GroupBy 2.语法为df.groupby(…

在甲骨文云容器实例(Container Instances)上部署chrome

甲骨文云推出了容器实例&#xff0c;这是一项无服务器计算服务&#xff0c;可以即时运行容器&#xff0c;而无需管理任何服务器。 今天我们尝试一下通过容器实例部署chrome。 Step1. 创建容器实例 在甲骨文容器实例页面&#xff0c;单击"创建容器实例"&#xff0c;…

LInux(四)进程控制(创建、终止、等待、替换)

目录 一、进程创建 1、pid_t fork(void) 2、写时拷贝技术&#xff08;父子进程间代码共享、数据独有&#xff09; 3、vfork()--创建一个子进程 4、fork创建子进程流程是什么样的&#xff1f; 5、一个关于fork的程序 6、程序a 7、 程序b 二、进程终止 1、在main函数中…

E2PROM 蓝桥杯 stm32 AT24C02读写函数

本文 代码使用 HAL 库 。 文章目录前言一、AT24C02 读写函数&#xff1a;1. 读函数2. 写函数&#xff1a;二. AT24C02 读写地址&#xff0c;原理图三. 延时问题总结下一节讲解 MCP4017。使用 E2PROM 来计算板子的上电次数 实验效果。前言 本文 先列出 AT24C02 读写函数 &#…

【蓝桥杯】简单数论3——素数

1、素数判断 素数定义:只能被1和自己整除的正整数。注:1不是素数&#xff0c;最小素数是2。 判断一个数n是不是素数:当n≤时&#xff0c;用试除法;n>时&#xff0c;试除法不够用&#xff0c;需要用高级算法&#xff0c;例如Miller_Rabin算法。 试除法&#xff1a;用[2, n…

MySQL —— 库操作

目录 一、库操作 1. 创建数据库 2. 创建数据库案例 二、字符集和校验规则 1. 查看系统默认字符集以及校验规则 2. 查看数据库支持的字符集 3. 查看数据库支持的字符集校验规则 4. 校验规则对数据库的影响 三、操纵数据库 1. 查看数据库 2. 显示创建语句 3. 修改数…

Pandas 数据可视化

数据可视化Joyful Pandas基本绘图动手学数据分析2 第二章&#xff1a;数据可视化2.7 如何让人一眼看懂你的数据&#xff1f;2.7.1 任务一2.7.2 任务二2.7.3 任务三2.7.4 任务四2.7.5 任务五2.7.6 任务六2.7.7 任务七Joyful Pandas Datawhale社区 Joyful Pandas 基本绘图 一维…

《深入浅出计算机组成原理》学习笔记 Day9

乘法器1. 顺序乘法2. 并行加速方法3. 电路并行参考1. 顺序乘法 以 13913 \times 9139为例&#xff0c;131011012,9101001213_{10} 1101_2, 9_{10} 1001_21310​11012​,910​10012​。用列竖式的方式计算&#xff1a; 在二进制下&#xff0c;由于只有 0 和 1&#xff0c;计…

逆序对问题、树状数组与离散化

目录 一、前言 二、逆序对问题 1、暴力法 2、归并排序法 3、树状数组与逆序对&#xff08;最巧妙最好的方法&#xff09; &#xff08;1&#xff09;倒序 &#xff08;2&#xff09;正序 &#xff08;3&#xff09;离散化 三、例题 1、小朋友排队&#xff08;lanqiao…

springBoot——SpringBoot 整合 Mybatis 流程

SpringBoot 整合持久层SpringBoot 整合 Mybatis 流程一、添加依赖1. pom.xml二、写配置文件1. application.yml三、写 Java 文件1. entity2. dao3. service4. controller5. mapper四、建立数据库五、测试SpringBoot 整合 Mybatis-Plus 流程一、添加依赖1. pom.xml二、写配置文件…

linux基本功系列之chattr命令

文章目录一. chattr命令介绍二. 语法格式及常用选项三. 参考案例3.1 给指定文件添加隐藏属性&#xff0c;阻止文件被修改&#xff1a;3.2 撤销i属性3.3 允许补充&#xff08;追加&#xff09;内容&#xff0c;无法覆盖/删除内容总结前言&#x1f680;&#x1f680;&#x1f680…

LabVIEW监控操纵杆,键盘或鼠标

LabVIEW监控操纵杆&#xff0c;键盘或鼠标在LabVIEW中从操纵杆/鼠标/键盘获取数据在LabVIEW中监控我的输入设备如何知道键盘上按了哪些键&#xff1f;用轮询的方式监控鼠标&#xff0c;键盘或操纵杆的动作。要在LabVIEW中监控这些设备&#xff0c;可以使用内置的输入设备采集VI…

【STM32】寄存器原理

如果我们想要深入去学习STM32单片机的存储原理和方式&#xff0c;就要花时间去了解STM32单片机有关寄存器的基本原理 单片机型号&#xff1a;正点原子STM32F103ZET6 目录 寄存器的定义 寄存器分类 存储器映射 寄存器映射 通过地址访问控制单元运作 通过定义宏来取代直接访…

C++ 哈希表查询_进入哈希函数结界的世界

1. 前言 哈希表或称为散列表&#xff0c;是一种常见的、使用频率非常高的数据存储方案。 哈希表属于抽象数据结构&#xff0c;需要开发者按哈希表数据结构的存储要求进行 API 定制&#xff0c;对于大部分高级语言而言&#xff0c;都会提供已经实现好的、可直接使用的 API&…

基于PythonOpenCv的视频图像处理

博主简介 博主是一名大二学生&#xff0c;主攻人工智能研究。感谢让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;c&#xff0c;Python&#xff0c;爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主&#xff0c;博主会继续更新的&#xff0c…

【教程】虚拟环境与Pytorch安装保姆级教学

【教程】虚拟环境与Pytorch安装保姆级教学NVIDIA驱动安装虚拟环境创建激活/退出相关库的安装Pycharm内设置虚拟环境Pytorch安装安装地址可能遇到的问题处理报错安装卡顿测试是否安装完成参考NVIDIA驱动安装 NVIDIA驱动可在官网进行安装&#xff1a;NVIDIA驱动官网 命令行输入…

一文上手决策树:从理论到实战

一、基础概念 决策树是一类极为常用的机器学习方法&#xff0c;尤其是在分类场景。决策树通过树形结构来递归地将样本分割到不同的叶子结点中去&#xff0c;并根据每个叶子结点中的样本构成对该结点中的样本进行分类。 我们可以从两个视角来理解决策树模型。 第一种视角是将…