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 = #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 = #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语言基础
为了学习数据结构,整理一篇基础的C语言入门知识(仅供自身学习用) 条件运算符 语法:exp1 ? exp2 : exp3; exp1是条件表达式,如果结果为真,返回exp2 如果结果为假,返回exp3 if (a > b)max …...
Docker教程:如何将Helix QAC创建为一个容器并运行?
在这个Docker教程中,你将了解到如何将Helix QAC创建为一个容器化的镜像并运行。 Docker的基本定义是一个开源且流行的操作系统级虚拟化(通常称为“容器化”)技术,它是轻量级且可移植的,主要在Linux和Windows上运行。D…...
1676_MIT 6.828 xv6中的CPU alarm_资料翻译整理
全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 我觉得看了几个MIT的课程之后让我觉得我的大学四年有点浪费时光,看起来MIT的课程的确是很有饱满度。 这里,再整理一份课程中的作业要求。 …...
记一次内存泄漏问题的排查
阶段一: 前段时间,突然发现服务在毫无征兆的情况下发生了重启。去看了一下容器退出的日志,发现内存利用率超过了100%,导致容器重启,进一步看了skyWalking,发现heap内存超了,当时只是简单的以为是…...
QML控件--Drawer
文章目录一、控件基本信息二、控件使用三、属性成员一、控件基本信息 Import Statement:import QtQuick.Controls 2.14 Since:Qt 5.7 Inherits:Popup 二、控件使用 Drawer:提供一个可以使用滑动手势打开和关闭的侧面板ÿ…...
PHY- PHY芯片概述
1 PHY概述 关于Internet Protocal的分层模型可以参考文章 :【Internet Protocal-OSI模型中的网络分层模型】,下面我们讲讲底层以太网控制器和收发器的知识。其主要是处理OSI模型中的物理层和链路层的事情。 在CAN/CANFD、FlexRay等总线中,有控制器Controller和收发器Transc…...
【C++】如何获取当前正在运行的函数的名称?
func、FUNCTION、__PRETTY_FUNCTION__的区别 常用获取函数名成的方法都有__func__、FUNCTION、PRETTY_FUNCTION。那么它们的区别是什么呢? 1) func、FUNCTION: 主要是获取函数的名称。 2) PRETTY_FUNCTION: 不仅能获取函数的名称&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文件。这里有两种方式: 方式一:使用 python内置函数,该函数将一个字符串的长度转换为与这个字符串长度相关的值。 例如:" readme"("r)。 prin…...
香橙派pi5下,debian,docker19.03.9版本runc容器逃逸
在香橙派pi5下,debian,docker19.03.9版本下,安装系统后,启动docker,显示一切正常。 当加入k8s集群以后,可以正常连接到集群,node状态显示为ready。看起来一切正常。不过过一会之后,香橙派节点内存飙升,然后挂掉。重连失败,需要重启后才能重连。且swapoff -a命令执行…...
Thinkphp6.0中间件.上
本节课我们来学习一下中间件的用法,定义一下中间件。 一.定义中间件 1. 中间件的主要用于拦截和过滤 HTTP 请求,并进行相应处理; 2. 这些请求的功能可以是 URL 重定向、权限验证等等; 3. 为了进一步了解中间件的用法&…...
十进制到八进制的转换
目录 十进制到八进制的转换 程序设计 程序分析 十进制到八进制的转换 【问题描述】对于输入的任意一个非负十进制整数n(0=<n<100000),打印输出与其等值的八进制数 【输入形式】非负十进制整数 【输出形式】相应十进制整数转换后的八进制正整数,若输入不符合要求,…...
【从零开始学Skynet】基础篇(四):网络模块常用API
游戏服务端要处理客户端请求,作为服务端引擎,网络编程也是Skynet的核心功能。1、学习网络模块 skynet.socket模块提供了网络编程的API,常用的API如下表所示:Lua API说明socket.listen(address ,port)监听一个端口,返回…...
怎么免费制作logo?logo免费设计在线生成,从此设计不求人
你有没有因为Logo制作而烦恼过?对于很多人来说,logo制作是一项比较大的工程,需要专门的设计师才能完成。但是请人设计费用高还很费时间,还需多次沟通修改。其实,我们可以自己免费制作logo,下面,…...
【目标检测】目标检测遇上知识图谱:Object detection meets knowledge graphs论文解读与复现
前言 常规的目标检测往往是根据图像的特征来捕捉出目标信息,那么是否有办法加入一些先验信息来提升目标检测的精准度? 一种可行的思路是在目标检测的输出加入目标之间的关联信息,从而对目标进行干涉。 2017年8月,新加波管理大学…...
IDEA重复下载SNAPSHOT包问题
问题现象 reimport 之后 状态栏显示resolving dependencies… 遇到某个比较大的快照包(33M),同一天的第2个版本时 1.0-xxx-SNAPSHOT.时间戳-2 idea importer 会先分片下载 x.jar.part文件中,然后复制为x.jar吧 如图中所示,其实已经下载完了&…...
【Unity入门】12.MonoBehaviour事件函数
【Unity入门】MonoBehaviour事件函数 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)常用的事件函数 (1)start和update方法 之前我们写的脚本,会默认帮助…...
1.3 Docker Compose-详细介绍
Docker Compose是一个用于定义和运行多个Docker容器的工具。它可以让用户轻松地定义和管理多个容器的配置,并且可以通过简单的命令来启动、停止和重启这些容器。在本文中,我们将详细介绍Docker Compose的使用和功能。 一、Docker Compose的安装 Docker…...
数据分析:麦当劳食品营养数据探索并可视化
系列文章目录 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒关注…...
ES6标准
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准 前端es6是模块化开发;es6模块化规范就是浏览器端与服务器端通用的模块化开发规范,其中定义了每一个JavaScript文件都是一个独立的模块,导入其他模块成员…...
HunyuanVideo-Foley与Java后端集成:构建高并发音效生成服务
HunyuanVideo-Foley与Java后端集成:构建高并发音效生成服务 1. 场景需求与技术挑战 在线教育平台面临一个共同痛点:海量视频课程需要配乐,但人工配乐成本高、效率低。一个中等规模的平台每月新增课程可能达到上万节,传统音乐制作…...
dmview.ocx文件丢失找不到 打不开程序 免费下载方法分享
在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...
双冗余链路实现(2/2期)
目录 拓扑: 基础需求: 出口路由器(双路): 静态路由: 防火墙配置: 全区域互通透传: 静态路由: 冗余备份: 核心交换机: 静态路由ÿ…...
51单片机实战:UART串口通信与数据交互优化
1. UART串口通信基础与51单片机实战价值 我第一次用51单片机做UART通信时,连波特率是什么都搞不清楚,结果电脑发过来的数据全是乱码。后来才发现是单片机定时器初值算错了,这个经历让我深刻理解到串口通信基础的重要性。 串口通信就像两个人用…...
Mac Mouse Fix终极指南:让你的第三方鼠标在macOS上焕发新生
Mac Mouse Fix终极指南:让你的第三方鼠标在macOS上焕发新生 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 还在为macOS上第三方鼠标功能受限而…...
zteOnu:核心功能全解析与实战指南
zteOnu:核心功能全解析与实战指南 【免费下载链接】zteOnu 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 解锁高级配置:工厂模式激活指南 场景描述 网络管理员在配置中兴光猫时,发现普通用户权限无法修改关键网络参数&…...
Llama-3.2V-11B-cot实操手册:构建带反馈机制的迭代式视觉推理Agent
Llama-3.2V-11B-cot实操手册:构建带反馈机制的迭代式视觉推理Agent 你有没有遇到过这种情况?给AI看一张复杂的图表或流程图,它要么答非所问,要么只能给出一个笼统的、没有逻辑链条的答案。你心里想:“它到底是怎么得出…...
【PVE实战】低成本2.5G网卡升级与iperf3性能验证全记录
1. 为什么需要升级到2.5G网络环境 最近几年,随着NAS、视频剪辑、虚拟机等应用场景的普及,传统的千兆网络(1Gbps)越来越显得力不从心。我自己就经常遇到这样的情况:在局域网内传输大文件时,千兆网络的极限速…...
Emby Premiere完全免费解锁终极教程:简单三步享受高级媒体服务器功能
Emby Premiere完全免费解锁终极教程:简单三步享受高级媒体服务器功能 【免费下载链接】emby-unlocked Emby with the premium Emby Premiere features unlocked. 项目地址: https://gitcode.com/gh_mirrors/em/emby-unlocked 你是否曾经为Emby Premiere的高级…...
小白也能玩转AI绘画:LiuJuan20260223Zimage快速上手指南
小白也能玩转AI绘画:LiuJuan20260223Zimage快速上手指南 你是不是也刷到过那些用AI生成的、细节超棒的人像图片,心里痒痒的,但又觉得那些工具太复杂,光是安装部署就劝退了?别担心,今天要介绍的这个工具&am…...
