当前位置: 首页 > news >正文

C语言基础

为了学习数据结构,整理一篇基础的C语言入门知识(仅供自身学习用)

条件运算符

语法:exp1 ? exp2 : exp3;
exp1是条件表达式,如果结果为真,返回exp2
如果结果为假,返回exp3

if (a > b)max = a;
elsemax = b;

与下面语句是等价的

max = a > b ? a : b

goto语句

语法:goto标签;

#include <stdio.h>int main()
{int i = 5;while (i++){if (i > 10){goto A;}}
A:	printf("Here, i = %d\n", i);return 0;
}

在C语言中尽量少用goto语句,容易破坏原来的代码逻辑。

int 占据四个字节, char型占据一个字节,double型占八个字节。

使用循环来访问数组

int a[10];
for (i = 0; i < 10; i++)
{a[i] = i;
}

录入班级十个人的成绩,并求平均数

#include <stdio.h>
#define NUM 10int main()
{int s[NUM];int i, sum = 0;for (i = 0; i < 10; i++){printf("请输入第%i位同学的成绩::, i + 1);scanf(“%d", &s[i]);sum += s[i];}printf("本次考试的平均分数是:%.2f\n", (double)sum / NUM);return 0;
}

指针

定义指针变量
类型名 *指针变量名
char *pa; //定义一个指向字符型的指针变量
int *pb; //定义一个指向整型的指针变量

如果需要获取某个变量的地址,可以使用取地址运算符( & )
char *pa = &a;
int *pb= &f;
如果需要访问指针变量指向的数据,可以使用取值运算符 ( * )
printf(“%c, %d\n”, *pa, *pb);

#include <stdio.h>int main()
{char a = 'F';int f = 123;char *pa = &a;int *pb = &f;printf("a = %c\n", *pa);printf("f = %d\n", *pb);*pa = "C";*pb += 1;printf("now, a = %c\n" ,*pa);printf("now, f = %d\n" ,*pb);printf("sizeof pa = %d\n", sizeof(pa));printf("sizeof pb = %d\n", sizeof(pb)); \\指针地址都是4字节printf("the addr of a is : %p\n", pa);printf("the addr of b is : %p\n", pb);return 0;
}
*(array+i) == array[i]
*(*(array+i)+j) == array[i][j]
*(*(*(array+i)+j)+k) == array[i][j][k]

初始化二维数组是可以偷懒的

int array[2][3] = {{0,1,2}, {3,4,5}}
可以写成
int array[][3] = {{0,1,2}, {3,4,5}}定义一个数组指针是这样的
int (*p)[3];
#include <stdioo.h>int main()
{int array[2][3] = {{0,1,2}, {3,4,5}};int (*p)[3] = array;printf("**(p+1): %d\n", **(p+1));printf("** array+1): %d\n", **(array+1));printf("array[1][0]: %d\n", array[1][0]);printf("*(*(p+1)+2): %d\n", *(*(p+1)+2));printf("*(* array+1)+2): %d\n", *(*(array+1)+2));printf("array[1][2]: %d\n", array[1][2]);return 0;
}

void指针
void指针称为通用指针,它可以指向任意类型的数据,任何类型的指针都可以赋值给void指针。

#include  <stdio.h>int main()
{int num = 1024;int *pi = &num;char *ps = "FishC";void *pv;pv = pi;printf("pi:%p, pv:%p\n", pi, pv);pv = ps;printf("ps:%p, pv:%p\n", pi, pv);return 0;
}
输出的内容是指针指向的地址

NULL指针

#define NULL ((void *)0)

指向指针的指针

#include <stdio.h>int main()
{int num = 520;int *p = &num;int **pp = &p;return 0;
}
num 520
p &num
*p num 520
pp &p
*pp p &num
**pp *p num 520

结构体

定义结构体类型变量
struct 结构体名称 结构体变量名
或者在结构体尾部定义变量

要访问结构体成员,我们需要引入一个新的运算符,点号(.)运算符。比如book.title就是引用book结构体的title成员,它是一个字符数组;而book.price则是引用book结构体的price成员,它是一个浮点型的变量。

#include <stdio.h>struct Book
{char title[128];char auther[40];float price;unsigned int date;char publisher[40];
} book;int main(void)
{printf("请输入书名:”);scanf("%s", book.title); printf("请输入作者:”);scanf("%s", book.author);printf("请输入售价:”);scanf("%s", &book.price);printf("请输入出版日期:”);scanf("%s", &book.date);printf("请输入出版社:”);scanf("%s", book.publisher);printf("\n=====数据录入完毕=====");printf("书名:%s\n", book.title);printf("作者:%s\n", book.author);printf("售价:%s\n", book.price);printf("出版日期:%s\n", book.date);printf("出版社:%s\n", book.publisher);return 0;

结构体指针
通过结构体指针访问结构体成员有两种方法
(*结构体指针).成员名
结构体指针->成员名

相关文章:

C语言基础

为了学习数据结构&#xff0c;整理一篇基础的C语言入门知识&#xff08;仅供自身学习用&#xff09; 条件运算符 语法&#xff1a;exp1 ? exp2 : exp3; exp1是条件表达式&#xff0c;如果结果为真&#xff0c;返回exp2 如果结果为假&#xff0c;返回exp3 if (a > b)max …...

Docker教程:如何将Helix QAC创建为一个容器并运行?

在这个Docker教程中&#xff0c;你将了解到如何将Helix QAC创建为一个容器化的镜像并运行。 Docker的基本定义是一个开源且流行的操作系统级虚拟化&#xff08;通常称为“容器化”&#xff09;技术&#xff0c;它是轻量级且可移植的&#xff0c;主要在Linux和Windows上运行。D…...

1676_MIT 6.828 xv6中的CPU alarm_资料翻译整理

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 我觉得看了几个MIT的课程之后让我觉得我的大学四年有点浪费时光&#xff0c;看起来MIT的课程的确是很有饱满度。 这里&#xff0c;再整理一份课程中的作业要求。 …...

记一次内存泄漏问题的排查

阶段一&#xff1a; 前段时间&#xff0c;突然发现服务在毫无征兆的情况下发生了重启。去看了一下容器退出的日志&#xff0c;发现内存利用率超过了100%&#xff0c;导致容器重启&#xff0c;进一步看了skyWalking&#xff0c;发现heap内存超了&#xff0c;当时只是简单的以为是…...

QML控件--Drawer

文章目录一、控件基本信息二、控件使用三、属性成员一、控件基本信息 Import Statement&#xff1a;import QtQuick.Controls 2.14 Since&#xff1a;Qt 5.7 Inherits&#xff1a;Popup 二、控件使用 Drawer&#xff1a;提供一个可以使用滑动手势打开和关闭的侧面板&#xff…...

PHY- PHY芯片概述

1 PHY概述 关于Internet Protocal的分层模型可以参考文章 :【Internet Protocal-OSI模型中的网络分层模型】,下面我们讲讲底层以太网控制器和收发器的知识。其主要是处理OSI模型中的物理层和链路层的事情。 在CAN/CANFD、FlexRay等总线中,有控制器Controller和收发器Transc…...

【C++】如何获取当前正在运行的函数的名称?

func、FUNCTION、__PRETTY_FUNCTION__的区别 常用获取函数名成的方法都有__func__、FUNCTION、PRETTY_FUNCTION。那么它们的区别是什么呢&#xff1f;   1) func、FUNCTION&#xff1a; 主要是获取函数的名称。   2) PRETTY_FUNCTION&#xff1a; 不仅能获取函数的名称&am…...

42.原型对象 prototype

目录 1 面向对象与面向过程 2 原型对象 prototype 3 在内置对象中添加方法 4 constructor 属性 5 实例对象原型 __proto__ 6 原型继承 7 原型链与instanceof 7.1 原型链 7.2 instanceof 8 案例-模态框 1 面向对象与面向过程 编程思想有 面向过程 与 面向…...

python 读写txt方法

​​​​​​​ 1. Python支持在程序中读写 txt文件。这里有两种方式&#xff1a; 方式一&#xff1a;使用 python内置函数&#xff0c;该函数将一个字符串的长度转换为与这个字符串长度相关的值。 例如&#xff1a;" readme"&#xff08;"r&#xff09;。 prin…...

香橙派pi5下,debian,docker19.03.9版本runc容器逃逸

在香橙派pi5下,debian,docker19.03.9版本下,安装系统后,启动docker,显示一切正常。 当加入k8s集群以后,可以正常连接到集群,node状态显示为ready。看起来一切正常。不过过一会之后,香橙派节点内存飙升,然后挂掉。重连失败,需要重启后才能重连。且swapoff -a命令执行…...

Thinkphp6.0中间件.上

本节课我们来学习一下中间件的用法&#xff0c;定义一下中间件。 一&#xff0e;定义中间件 1. 中间件的主要用于拦截和过滤 HTTP 请求&#xff0c;并进行相应处理&#xff1b; 2. 这些请求的功能可以是 URL 重定向、权限验证等等&#xff1b; 3. 为了进一步了解中间件的用法&…...

十进制到八进制的转换

目录 十进制到八进制的转换 程序设计 程序分析 十进制到八进制的转换 【问题描述】对于输入的任意一个非负十进制整数n(0=<n<100000),打印输出与其等值的八进制数 【输入形式】非负十进制整数 【输出形式】相应十进制整数转换后的八进制正整数,若输入不符合要求,…...

【从零开始学Skynet】基础篇(四):网络模块常用API

游戏服务端要处理客户端请求&#xff0c;作为服务端引擎&#xff0c;网络编程也是Skynet的核心功能。1、学习网络模块 skynet.socket模块提供了网络编程的API&#xff0c;常用的API如下表所示&#xff1a;Lua API说明socket.listen(address ,port)监听一个端口&#xff0c;返回…...

怎么免费制作logo?logo免费设计在线生成,从此设计不求人

你有没有因为Logo制作而烦恼过&#xff1f;对于很多人来说&#xff0c;logo制作是一项比较大的工程&#xff0c;需要专门的设计师才能完成。但是请人设计费用高还很费时间&#xff0c;还需多次沟通修改。其实&#xff0c;我们可以自己免费制作logo&#xff0c;下面&#xff0c;…...

【目标检测】目标检测遇上知识图谱:Object detection meets knowledge graphs论文解读与复现

前言 常规的目标检测往往是根据图像的特征来捕捉出目标信息&#xff0c;那么是否有办法加入一些先验信息来提升目标检测的精准度&#xff1f; 一种可行的思路是在目标检测的输出加入目标之间的关联信息&#xff0c;从而对目标进行干涉。 2017年8月&#xff0c;新加波管理大学…...

IDEA重复下载SNAPSHOT包问题

问题现象 reimport 之后 状态栏显示resolving dependencies… 遇到某个比较大的快照包(33M)&#xff0c;同一天的第2个版本时 1.0-xxx-SNAPSHOT.时间戳-2 idea importer 会先分片下载 x.jar.part文件中&#xff0c;然后复制为x.jar吧 如图中所示&#xff0c;其实已经下载完了&…...

【Unity入门】12.MonoBehaviour事件函数

【Unity入门】MonoBehaviour事件函数 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;常用的事件函数 &#xff08;1&#xff09;start和update方法 之前我们写的脚本&#xff0c;会默认帮助…...

1.3 Docker Compose-详细介绍

Docker Compose是一个用于定义和运行多个Docker容器的工具。它可以让用户轻松地定义和管理多个容器的配置&#xff0c;并且可以通过简单的命令来启动、停止和重启这些容器。在本文中&#xff0c;我们将详细介绍Docker Compose的使用和功能。 一、Docker Compose的安装 Docker…...

数据分析:麦当劳食品营养数据探索并可视化

系列文章目录 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏&#x1f4c1;评论&#x1f4d2;关注…...

ES6标准

ECMAScript 6.0&#xff08;以下简称 ES6&#xff09;是 JavaScript 语言的下一代标准 前端es6是模块化开发&#xff1b;es6模块化规范就是浏览器端与服务器端通用的模块化开发规范&#xff0c;其中定义了每一个JavaScript文件都是一个独立的模块&#xff0c;导入其他模块成员…...

ASP一个物流商品运输系统的设计与实现

物流运输行业的今天正朝着追求高效、低成本、稳定可靠的方向发展。本文详细介绍了网上物流管理系统&#xff0c;涉及到客户端运输线路设计、过程跟踪等功能模块以及管理员端的相应模块的具体实现&#xff0c;分析了整个系统的架构、工作原理、实现功能等。系统采用ASPMS SQL以B…...

肖 sir_就业课__009ui自动化讲解

ui自动化讲解 1、你做过自动化测试吗&#xff1f;做过 ui自动化测试、接口自动化、app自动化 2、你讲下你做的ui接口自动化&#xff1f; &#xff08;1&#xff09;第一种&#xff1a;按照线性流程讲解 &#xff1a;pythonselenium 库做ui自动化 &#xff08;2&#xff09;第二…...

「线性DP」花店橱窗

花店橱窗 https://ac.nowcoder.com/acm/contest/24213/1005 题目描述 ​ 小q和他的老婆小z最近开了一家花店&#xff0c;他们准备把店里最好看的花都摆在橱窗里。 ​ 但是他们有很多花瓶&#xff0c;每个花瓶都具有各自的特点&#xff0c;因此&#xff0c;当各个花瓶中放入不同…...

数组的去重方法

1、ES6的Set方法去重 new Set是ES6新推出的一种类型。它和数组的区别在于&#xff0c;Set类型中的数据不可以有重复的值。当然&#xff0c;数组的一些方法Set也无法调用。 使用方法&#xff1a;将一个数组转化为Set数据&#xff0c;再转化回来&#xff0c;就完成了去重。 cons…...

ESP32-LORA通信

文章目录好久没更新博客了&#xff0c;今天清明节&#xff0c;写个LORA通信。在此记念在天堂的外婆。祝她安好LORA通信简介一、模块二、使用步骤1.电脑通过USB串口模块联接LORA模块2.ESP32连接LORA通信进行收发通信3.电脑运行调试助手&#xff0c;ESP32运行代码。实现LORA通信测…...

博客首页效果

学习来自风宇blog的博客首页效果 全部用的基本上都是原生的html&#xff0c;css&#xff0c;js特别是flex布局的使用&#xff0c;主轴方向可以是横轴&#xff0c;也可以是纵轴&#xff0c;弹性项还可可以使用百分比sticky粘性布局&#xff0c;作为侧边栏&#xff0c;它不会超出…...

【LeetCode】剑指 Offer(29)

目录 题目&#xff1a;剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 57. 和为s的两个数…...

自然语言处理(八):Lexical Semantics

目录 1. Sentiment Analysis 2. Lexical Database 2.1 What is Lexical Database 2.2 Definitions 2.3 Meaning Through Dictionary 2.4 WordNet 2.5 Synsets 2.6 Hypernymy Chain 3. Word Similarity 3.1 Word Similarity with Paths 3.2 超越路径长度 3.3 Abstra…...

推荐一款 AI 脑图软件,助你神速提高知识体系搭建

觅得一款神器&#xff0c;接近我理想中&#xff0c;搭建知识体系的方法&#xff0c;先来看视频作为数据库开发或管理者&#xff0c;知识体系搭建尤为重要。来看看近些年缺乏足够数据库知识面造成的危害&#xff1a;a/ 数据安全风险&#xff1a;例如&#xff0c;2017年Equifax数…...

掌握这些“学习方法和工具”,让你事半功倍!

在中国这个高竞争的社会环境下&#xff0c;学习成为了每个人都需要掌握的技能。然而&#xff0c;学习并不仅仅是读书和听课&#xff0c;更是需要一系列高效的方法和习惯来提高效率。本文将介绍一些实用的学习经验和方法&#xff0c;以及推荐一些国内好的学习工具和平台&#xf…...