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

C语言-语法

数据类型

C.jpg

字符串

C中字符串拼接不用+号,直接使用空格。

char* str = "hello"    "world";

换行链接,加上\就不会报错

char* longStr = "00000000000000000000000000000\
00000000000000000000000000000";

typedef

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。

typedef unsigned char BYTE;
//在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写
BYTE  b1, b2;
​
typedef struct
{  char  title[50];  char  author[50];
} Book;
//在这个类型定义之后,结构体声明可以省略struct
Book book;

typedef vs #define

#define 是 C 指令,用于为各种数据类型定义别名,与 typedef 类似,但是它们有以下几点不同:

  • typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。

  • typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。

枚举

枚举是C语言中的一种基本数据类型,它使数更简洁,更易读。它底层实际上是一个整数,语法格式如下:

enum Week{   MON,   TUE,   WED,   THU,   FRI,   SAT,   SUN,
};

第一个枚举成员默认值为整型0,后续枚举成员的值在前一个成员上递增1。当然我们也可以显示指定枚举值。

enum Week{   MON = 10,   TUE,   WED,   THU = 20,   FRI,   SAT,   SUN = 30,
};

使用枚举:

int main(void){   enum Weak w = MON;   printf("%d", w);   return 0;
}

枚举类型

上面我们声明枚举变量需要使用enum关键字,非常麻烦。在实际开发中我们是和typedef结合使用的,typedef可以把我们的枚举声明为一个类型,这样我们就可以直接使用类型,而不需要加 enum 关键字了。

tyepdef enum {   MON,   TUE,   WED,   THU,   FRI,   SAT,   SUN,
} Week;
​
int main(void){   //这样就可以直接使用Weak类型了   Weak w = MON;   printf("%d", w);   return 0;
}

指针

指针是C语言中的重中之重,也是比较难理解的。高级语言中没有指针的概念,是因为高级语言中对指针进行了进一步的包装和翻译。高级语言中的一些高级语法也是通过指针实现的,所以在C中使用指针也能实现像高级语言的类似功能的一些奇技淫巧。

什么是指针

高级语言里面虽然没有指针,但是我们对指针的概念其实并不陌生。我们在Java中都知道对象的引用的概念,在方法中声明一个对象,会在栈中存放一个引用,而这个对象是保存在堆内存中的,栈中的引用会指向堆内存中的对象。其实这个引用就类似于指针的意思,只不过引用可以直接操作对象。高级语言中不区分这两种概念,统一使用引用的概念。

严格的说,C语言中的指针类型,其实就是指保存的值是内存地址的变量

指针的使用

#include <stdio.h>
int main(void){   int num = 10;   //声明指针类型变量   int *ptr = NULL;   //给指针变量赋值  &:取地址运算符   *ptr = &num;   printf("ptr=%x\n", ptr);   //取出指针指向的值  *:间接寻址运算符   printf("num=%d\n", *ptr);
}

ptr就是指针变量,与普通变量的区别就是多了一个星号。

  • 取地址运算符 &

    顾名思义,就是可以获得一个变量在内存中的地址。

  • 间接寻址运算符 *

    以上第10行代码中的星号*是间接寻址运算符,它只能对指针变量使用,表示将该指针变量保存的地址对应的内存中的值取出来。换句话说,如果直接将一个内存地址对应的内存中的值取出来,这就叫直接寻址。使用间接寻址运算符的过程被称为解引用

指针类型

我们知道指针实际就是保存了一个地址,那为什么需要声明指针类型呢?指针类型的大小都是相同的,在32位系统中占4个字节,在64为系统(未开启指针压缩)中占8字节,理论上所有的指针都应该是同一种类型才对呀。

先写个代码探索一番:

#include <stdio.h>
int main(){   short num = 18;   char *pChar = (char *)&num;   int *pInt = (int *)&num;   printf("pChar=%x\npInt=%x\n", pChar, pInt);   printf("*pChar=%d\

相关文章:

C语言-语法

数据类型 字符串 C中字符串拼接不用+号,直接使用空格。 char* str = "hello" "world"; 换行链接,加上\就不会报错 char* longStr = "00000000000000000000000000000\ 00000000000000000000000000000"; typedef C 语言提供了 typedef …...

Flink Forward Asia 2024 大会 内容整理

一、Flink 2.0&#xff1a;十年磨一剑&#xff0c;开启流计算新纪元 作为 Flink 诞生十周年的重磅更新&#xff0c;Flink 2.0 被定位为“面向未来十年的流计算引擎”&#xff0c;核心目标是解决云原生、AI 融合、存算效率等新时代挑战。以下是它的几大杀手锏&#xff1a; 1. …...

golang进阶知识专项-理解值传递

在 Go 语言中&#xff0c;所有函数的参数传递都是值传递&#xff08;Pass by Value&#xff09;。当你将一个变量作为参数传递给函数时&#xff0c;实际上传递的是该变量的副本&#xff0c;而不是变量本身。理解这一点对于避免常见的编程错误至关重要。根据不同的类型&#xff…...

2020年联考《申论》第三题(河北县级卷)

材料&#xff1a; 总面积不过八平方米的店铺&#xff0c;摆满货品之后&#xff0c;两人在店内走动都有些困难&#xff0c;但这家小店在当地却是小有名气的老字号。69岁的店主老林是资深木雕艺人&#xff0c;更被称为“最后的手工酸枝筷子传人”。手工木筷取材自缅甸坤甸木、老挝…...

Kali WebDAV 客户端工具——Cadaver 与 Davtest

1. 工具简介 在 WebDAV 服务器管理和安全测试过程中&#xff0c;Cadaver 和 Davtest 是两款常用的命令行工具。 Cadaver 是一个 Unix/Linux 命令行 WebDAV 客户端&#xff0c;主要用于远程文件管理&#xff0c;支持文件上传、下载、移动、复制、删除等操作。Davtest 则是一款…...

八点八数字科技:开启数字人应用的无限可能

在数字科技飞速发展的时代&#xff0c;八点八数字科技凭借卓越实力&#xff0c;成为行业的领军者。自 2014 年成立&#xff0c;公司汇聚近百位顶尖人才&#xff0c;手握 30 新型发明专利与 80 软件著作权&#xff0c;完成数千万融资&#xff0c;实力备受认可。其自主研发的全…...

Vue 使用 vue-router 时,多级嵌套路由缓存问题处理

Vue 使用 vue-router 时&#xff0c;多级嵌套路由缓存问题处理 对于三级菜单&#xff08;或多级嵌套路由&#xff09;&#xff0c;vue 都是 通过 keep-alive 组件来实现路由组件的缓存。 有时候三级或者多级路由时&#xff0c;会出现失效情况。以下是三级菜单缓存的例子。 最…...

《实战AI智能体》Deepseek可以做什么?自然语言理解与分析

在人工智能技术快速迭代的今天,Deepseek凭借其先进的自然语言处理能力,正在重塑人机交互的边界。本文将从技术实现维度,深入解析该平台在自然语言理解、知识推理与文本分类三大核心领域的技术突破与应用实践。 一、深度语义理解引擎 Deepseek构建了多层级的语义解析架构,实…...

虚拟主机认证功能

一.认证功能 类型&#xff1a; 1.基于客户端地址的认证 2.基于用户的认证 1.基于客户端地址的认证 nginx是一款模块化软件&#xff0c;功能都是基于模块实现的。 如上图所示&#xff0c;访问认证是使用的这个access_module模块。 这个模块也给我们提供了一些指令&#xf…...

BGP协议深度解析:从背景到术语的全面梳理

引言 在复杂的网络架构中&#xff0c;不同自治系统&#xff08;AS&#xff09;之间的路由交互至关重要。BGP&#xff08;Border Gateway Protocol&#xff0c;边界网关协议&#xff09;作为自治系统间的动态路由协议&#xff0c;承担着跨 AS 路由传递的关键任务。本文将深入探讨…...

初步认识线程

概念 一个线程就是一个 "执行流",每一个线程之间都可以按照顺序执行自己的代码,多个线程之间可以 "同步" 执行多份代码 比如说,原本一个人做的事情,现在交给三个人一起做,那么这三个人就是线程 使用原因 那么为什么要有线程呢?我们直接使用进程不可以…...

【从零开始学习计算机科学】数字逻辑(一)绪论

【从零开始学习计算机科学】数字逻辑(一)绪论 概论信息与数字数字系统中常用的概念数字信号的描述方法概论 从数字(集成)电路的出现到计算机到网络到今天的移动互联网,数字电路是所有现代信息技术的基础。那么数字电路的基础又是什么呢?就是数字逻辑。所有数字系统都是基…...

Tomcat与Jetty的选择

Tomcat与Jetty的对比分析&#xff0c;分核心区别、性能表现及选型建议三部分&#xff1a; 一、核心区别对比 对比维度TomcatJetty架构设计多层级容器结构&#xff08;Server→Service→Engine等&#xff09;&#xff0c;复杂度高基于Handler链的轻量级设计&#xff0c;扩展性强…...

用AI学编程2——python学习1

一个py文件&#xff0c;学会所有python所有语法和特性&#xff0c;给出注释&#xff0c;给出这样的文件 Python 学习整合文件 """ Python 学习整合文件 包含 Python 的基础语法、数据结构、函数定义、面向对象编程、异常处理、文件操作、高级特性等内容 每个部…...

【教程】宝塔提示请不要将网站根目录设置到以下关键目录中

【教程】宝塔提示请不要将网站根目录设置到以下关键目录中 【教程】宝塔提示请不要将网站根目录设置到以下关键目录中更换目录解决问题 先在宝塔下载一个 【教程】宝塔提示请不要将网站根目录设置到以下关键目录中更换目录解决问题_起尔网【教程】宝塔提示请不要将网站根目录设…...

html常用的文本标签以及属性

HTML标签 HTML通过一系列的标签&#xff08;也成为元素&#xff09;&#xff0c;来定义文本&#xff0c;图像&#xff0c;链接等等&#xff0c;HTML标签是由尖括号包围的关键字。 标签通常成对出现&#xff0c;包括开始标签和结束标签&#xff08;也成为双标签&#xff09;&a…...

城市霓虹灯夜景拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 在城市霓虹灯夜景拍摄中&#xff0c;由于现场光线复杂等因素&#xff0c;照片可能无法完全呈现出当时的视觉感受。通过 Lr 调色&#xff0c;可以弥补拍摄时的不足。例如&#xff0c;运用基本调整面板中的曝光、对比度、阴影等工具&#xff0c;可以处理出画面的整体明暗…...

c#面试题整理

1.如何保持数据库的完整性&#xff0c;一致性 最好的方法&#xff1a;数据库约束&#xff08;check,unique,主键&#xff0c;外键&#xff0c;默认&#xff0c;非空&#xff09; 其次是&#xff1a;用触发器 最后&#xff1a;才是自己些业务逻辑&#xff0c;这个效率低 2.事…...

数据库基础以及基本建库建表的简单操作

文章目录 一、数据库是啥1.1、数据库的概念1.1、关系型数据库、非关系型数据库1.1、数据库服务器&#xff0c;数据库与表之间的关系 二、为啥要使用数据库2.1&#xff1a;传统数据文件存储2.2&#xff1a;数据库存储数据2.3、结论 三、使用数据库了会咋样四、应该咋用数据库&am…...

基于spring boot使用@Sl4j的日志功能,注解引入后爆红未生效

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 问题描述问题分析解决方案 &#x1f4c3;文章…...

《深度剖析架构蒸馏与逻辑蒸馏:探寻知识迁移的差异化路径》

在人工智能模型优化的前沿领域&#xff0c;架构蒸馏与逻辑蒸馏作为知识蒸馏的关键分支&#xff0c;正引领着模型小型化与高效化的变革浪潮。随着深度学习模型规模与复杂度的不断攀升&#xff0c;如何在资源受限的情况下&#xff0c;实现模型性能的最大化&#xff0c;成为了学术…...

使用OpenCV来获取视频的帧率

在OpenCV中&#xff0c;获取视频的帧率&#xff08;FPS, Frames Per Second&#xff09;是一个常见的操作&#xff0c;尤其是在处理视频流或进行视频分析时。帧率表示每秒钟视频中的帧数&#xff0c;这个参数对于视频播放速度和时间计算非常重要。 以下是如何使用OpenCV来获取…...

计算机视觉|3D卷积网络VoxelNet:点云检测的革新力量

一、引言 在科技快速发展的背景下&#xff0c;3D 目标检测技术在自动驾驶和机器人领域中具有重要作用。 在自动驾驶领域&#xff0c;车辆需实时、准确感知周围环境中的目标物体&#xff0c;如行人、车辆、交通标志和障碍物等。只有精确检测这些目标的位置、姿态和类别&#x…...

vue-cli3+vue2+elementUI+avue升级到vite+vue3+elementPlus+avue总结

上一个新公司接手了一个vue-cli3vue2vue-router3.0elementUI2.15avue2.6的后台管理项目&#xff0c;因为vue2在2023年底已经不更新维护了&#xff0c;elementUI也只支持到vue2&#xff0c;然后总结了一下vue3的优势&#xff0c;最后批准升级成为了vitevue3vue-router4.5element…...

Jmeter进行http接口测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文主要针对http接口进行测试&#xff0c;使用 jmeter工具实现。 Jmeter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较…...

大模型AI平台DeepSeek 眼中的SQL2API平台:QuickAPI、dbapi 和 Magic API 介绍与对比

目录 1 QuickAPI 介绍 2 dbapi 介绍 3 Magic API 介绍 4 简单对比 5 总结 统一数据服务平台是一种低代码的方式&#xff0c;实现一般是通过SQL能直接生成数据API&#xff0c;同时能对产生的数据API进行全生命周期的管理&#xff0c;典型的SQL2API的实现模式。 以下是针对…...

靶场之路-VulnHub-DC-6 nmap提权、kali爆破、shell反连

靶场之路-VulnHub-DC-6 一、信息收集 1、扫描靶机ip 2、指纹扫描 这里扫的我有点懵&#xff0c;这里只有两个端口&#xff0c;感觉是要扫扫目录了 nmap -sS -sV 192.168.122.128 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4p1 Debian 10deb9u6 (protoc…...

nginx服务器实现上传文件功能_使用nginx-upload-module模块

目录 conf文件内容如下html文件内容如下上传文件功能展示 conf文件内容如下 #user nobody; worker_processes 1;error_log /usr/logs/error.log; #error_log /usr/logs/error.log notice; #error_log /usr/logs/error.log info;#pid /usr/logs/nginx.pid;even…...

32.C++二叉树进阶1(二叉搜索树)

⭐上篇文章&#xff1a;31.C多态4&#xff08;静态多态&#xff0c;动态多态&#xff0c;虚函数表的存储位置&#xff09;-CSDN博客 ⭐本篇代码&#xff1a;c学习/18.二叉树进阶-二叉搜索树 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分…...

RV1126+FFMPEG多路码流监控项目

一.项目介绍&#xff1a; 本项目采用的是易百纳RV1126开发板和CMOS摄像头&#xff0c;使用的推流框架是FFMPEG开源项目。这个项目的工作流程如下(如上图)&#xff1a;通过采集摄像头的VI模块&#xff0c;再通过硬件编码VENC模块进行H264/H265的编码压缩&#xff0c;并把压缩后的…...

doris: SQL Server

Doris JDBC Catalog 支持通过标准 JDBC 接口连接 SQL Server 数据库。本文档介绍如何配置 SQL Server 数据库连接。 使用须知​ 要连接到 SQL Server 数据库&#xff0c;您需要 SQL Server 2012 或更高版本&#xff0c;或 Azure SQL 数据库。 SQL Server 数据库的 JDBC 驱动…...

valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug

valgrind --toolhelgrind ./your_program 如果检测的对象是大型程序&#xff0c;可以设定仅在某些函数中开启 valgrind 的检测&#xff1a; Valgrind 提供了一些客户请求&#xff08;client requests&#xff09;&#xff0c;可以在代码中插入特定的宏来控制 Valgrind 的行为。…...

查看k8s集群的资源使用情况

查看Kubernetes&#xff08;k8s&#xff09;集群的资源使用情况有多种方法&#xff0c;以下是一些常见的方式&#xff1a; 使用kubectl命令行工具 查看节点资源使用情况 kubectl top nodes命令可以显示集群中各个节点的CPU和内存使用情况。例如&#xff1a; NAME …...

在 k8s中查看最大 CPU 和内存的极限

在 Kubernetes&#xff08;k8s&#xff09;中&#xff0c;你可以从不同层面查看最大 CPU 和内存的极限&#xff0c;下面为你详细介绍从节点和集群层面查看的方法。 查看节点的 CPU 和内存极限 节点的 CPU 和内存极限是指单个节点上可分配的最大资源量&#xff0c;可通过以下几…...

IDC权威认证!永洪科技入选 IDC「GBI图谱」,点亮生成式 BI 价值灯塔

大数据市场正在稳步前进&#xff0c;生成式AI已成为厂商服务的重点方向&#xff0c;其发展离不开数据底座建设和数据工程管理&#xff0c;反过来AI也会帮助开发运维人员、业务人员和管理层更好地使用、查询数据。IDC调研数据显示&#xff0c;在生成式AI的驱动下&#xff0c;未来…...

HarmonyOS 应用程序包结构 (编译态)

不同类型的Module编译后会生成对应的HAP、HAR、HSP等文件&#xff0c;开发态视图与编译态视图的对照关系如下&#xff1a; 从开发态到编译态&#xff0c;Module中的文件会发生如下变更&#xff1a; ets目录&#xff1a;ArkTS源码编译生成.abc文件。resources目录&#xff1a;A…...

C# 程序结构

C#的程序结构大体可以分为&#xff1a; 命名空间、类名、Main方法、标识符及关键字语句注释 C# 文件的后缀为 .cs 以下创建一个HelloWorld的类&#xff0c;可以看一下 using System; namespace HelloWorldApplication //命名空间 {class HelloWorld //类名{static void …...

LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)

文章目录 LLM 学习&#xff08;二 完结 Multi-Head Attention、Encoder、Decoder&#xff09;Self-Attention &#xff08;自注意力机制&#xff09;结构多头注意力 EncoderAdd & Norm 层Feed Forward 层 EncoderDecoder的第一个Multi-Head AttentionMasked 操作Teacher Fo…...

GET3D:从图像中学习的高质量3D纹理形状的生成模型

【摘要】 本文提出了GET3D,这是一种新的生成模型,能够生成具有任意拓扑结构的高质量3D纹理网格,可以直接被3D渲染引擎使用并在下游应用中立即使用。现有的3D生成模型要么缺乏几何细节,要么生成的网格拓扑受限,通常不支持纹理,或者在生成过程中使用神经渲染器,使得它们在…...

JmeterHttp请求头管理出现Unsupported Media Type问题解决

JmeterHttp请求头管理出现Unsupported Media Type问题解决 大多数的app与pc端压测的时候都会出现这种情况 当我们在jemter测试当中当中遇见Unsupported Media Type&#xff0c;有一种可能就是我们请求的网页的content-Type的类型与我们测试的时候的类型不一致 解决方法 可以添…...

Python 性能优化:从入门到精通的实用指南

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

Vue23Web 基礎性拉滿的面試題(2025版)還沒更新完...

Vue2&3 基礎性1. 關於Vue2和Vue3生命週期的差別2. Vue2&3組件之間傳參不同點Vue2 傳遞與接收Vue3 傳遞與接收 (使用script setup語法糖)Vue3 傳遞與接收 (不使用script setup語法糖) 3. Vue2&3 keep-alive 組件Vue2 keep-aliveVue3 keep-alive 進階性爲什麽POST請求…...

Python基于Django的医用耗材网上申领系统【附源码、文档说明】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

STM32使用无源蜂鸣器

1.1 介绍&#xff1a; 有源蜂鸣器&#xff1a;内部自带振荡源&#xff0c;将正负极接上直流电压即可持续发声&#xff0c;频率固定 无源蜂鸣器&#xff1a;内部不带振荡源&#xff0c;需要控制器提供振荡脉冲才可发声&#xff0c;调整提供振荡脉冲的频率&#xff0c;可发出不同…...

9.1go结构体

Go不是完全面向对象的&#xff0c;没有类的概念&#xff0c;所以结构体应该承担了更多的责任。 结构体定义 使用 type 和 struct 关键字定义&#xff1a; type Person struct { Name string Age int } 字段可以是任意类型&#xff0c;包括其他结构体或指针。 字段名以大写…...

Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(一)

Ubuntu20.04本地配置IsaacLab的G1训练环境&#xff08;一&#xff09; 配置Omniverse环境配置IsaacSim配置IsaacLab 写在前面&#xff0c;如果Ubuntu剩余空间低于60G&#xff0c;则空间不足&#xff0c;除非你不需要资产包。但资产包中却包含了G1模型、Go2模型等机器人模型和代…...

全星FMEA软件:汽车电子行业研发管理高效之选

全星FMEA软件&#xff1a;汽车电子行业研发管理高效之选 在汽车电子行业&#xff0c;FMEA&#xff08;失效模式与影响分析&#xff09;是确保产品质量和安全的关键工具。然而&#xff0c;传统的FMEA分析过程往往繁琐复杂&#xff0c;耗费大量时间和精力。 全星FMEA软件应运而生…...

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型&#xff08;LLM&#xff09;应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型&#xff08;LLM&#xff09;应用开发平台 一、简单介绍 二、Docker 下载安…...

OpenCV计算摄影学(18)平滑图像中的纹理区域同时保留边缘信息函数textureFlattening()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::textureFlattening 是 OpenCV 中用于图像处理的一个函数&#xff0c;旨在平滑图像中的纹理区域&#xff0c;同时保留边缘信息。该技术特别适…...

RLock类详细介绍、应用场景和示例代码

概述 org.redisson.api.RLock 是 Redisson 提供的 分布式可重入锁&#xff08;类似 ReentrantLock&#xff09;&#xff0c;基于 Redis 实现&#xff0c;常用于 分布式环境 下的 并发控制。 1. RLock 详解 &#x1f539; 特点 基于 Redis 实现&#xff0c;支持 集群环境。可…...