
C/C++基础
文章平均质量分 60
C/C++基础
昊虹AI笔记
认真记录技术笔记,让记录产生价值!
展开
-
C语言中把函数声明为inline是什么意思?
在 C 语言中,将函数声明为inline(内联)意味着编译器将该函数的代码直接插入到调用它的地方,而不是执行常规的函数调用。这种优化可以减少函数调用的开销,如栈帧分配和参数传递,从而提高程序运行效率,尤其是对小型、频繁调用的函数。inline。原创 2025-03-27 10:29:26 · 259 阅读 · 0 评论 -
C++类中关键词this的含义【指向当前对象的指针】
关键字时,就能快速理解它的用途了!这样,你在 C++ 编程中遇到。中,指向调用该成员函数的对象。原创 2025-02-08 12:39:21 · 297 阅读 · 0 评论 -
C++类的初始化列表是怎么一回事?哪些东西必须放在初始化列表中进行初始化,原因是什么?
在C++中,类的初始化列表是一个在构造函数体之前用来初始化类成员的机制。它允许你在构造函数的声明部分直接初始化成员变量,而不是在构造函数体内通过赋值的方式。原创 2025-02-03 11:35:18 · 653 阅读 · 0 评论 -
C++类定义中的关键字public 、protected 、private的详细介绍【定义类成员的访问权限属性和基类的成员的访问权限属性】
C++类的成员有三种属性,分别是public 、protected 、private ,请分别介绍下。publicprotected和private。这些访问权限决定了类成员在类内部、派生类以及类外部的可见性和可访问性。访问权限类内部派生类类外部public✔️✔️✔️protected✔️✔️❌private✔️❌❌在C++中,中的public关键字表示继承方式,具体来说,它决定了基类(Base)中的成员在派生类(Derived)中的访问权限。public继承基类的public。原创 2025-02-03 11:22:40 · 580 阅读 · 0 评论 -
C++中类的默认构造函数是怎么回事儿?
为什么说第1个代码中类MyClass有默认的构造函数,而第2个代码中类MyClass没有默认的构造函数?是指不带任何参数,或者所有参数都有默认值的构造函数。如果一个类没有定义任何构造函数,编译器会自动生成一个。没有默认构造函数,必须手动提供初始化值,否则会报错。本身有默认构造函数,所以。可以直接默认初始化。,但因为 C++ 编译器会。有默认构造函数,所以。这里 MyClass。,可以被默认初始化。原创 2025-02-03 10:52:04 · 222 阅读 · 0 评论 -
详解C++中引用传递的概念;C++类中的引用成员为什么初始化后就不能更改了?
在看这篇文章看可以看下我之前写的关于C++中参数的引用传递的介绍,详情见。原创 2025-02-03 10:34:10 · 695 阅读 · 0 评论 -
在C++中,成员变量必须在对象构造完成前初始化,但初始化的方式有多种...
在C++中,,但初始化的方式可以有多种,具体取决于成员变量的类型和设计需求。原创 2025-02-02 22:30:10 · 974 阅读 · 0 评论 -
为什么在编程中cast有强制类型转换的意思?“XXX without a cast”的警告该怎么处理?
C语言或C++在编程时,常常遇到“XXX without a cast”的警告信息,意思是 XXX 没有进行显示的强制类似转换,那么。有“塑造、铸造”的意思。引申到编程中,就是将一种类型的数据“塑造成”另一种类型。为什么会有强制类型转换的意思呢?原创 2025-01-26 09:43:49 · 242 阅读 · 0 评论 -
C语言中枚举类型的相关知识
使用关键字enumenum 枚举名 {枚举常量1,枚举常量2,...枚举常量N// 定义枚举类型enum Day {MONDAY, // 默认值为 0TUESDAY, // 默认值为 1WEDNESDAY, // 默认值为 2THURSDAY, // 默认值为 3FRIDAY // 默认值为 4\n");return 0;在这个例子中,定义了一个名叫Day的枚举类型,如果一个变量其类型为枚举类型Day,比如这个例子中的变量today。原创 2025-01-16 11:46:45 · 255 阅读 · 0 评论 -
C语言变量修饰符`volatile`的含义和需要注意的地方
在C语言中,关键字 volatile是一种类型修饰符,表示所修饰的变量可能在程序的控制流之外被修改,通常用于硬件寄存器、信号处理程序或者多线程的共享变量等场景。它告诉编译器不要对该变量的读写操作进行优化。原创 2025-01-07 13:41:26 · 447 阅读 · 0 评论 -
C语言带参数的宏定义的相关知识汇总(最常用的形式、带标记分隔符##的形式...)
define Sb.........则在编译预处理时##原创 2025-01-03 14:55:22 · 443 阅读 · 0 评论 -
Linux编程中C函数定义的第一行中出现的关键字“__init”是什么意思?
在驱动程序模块的编写中,常常会在初始化函数的第一行中加上关键字“__init”,请问“__init”是什么意思?原创 2025-01-03 10:46:33 · 804 阅读 · 0 评论 -
如何查看gcc编译器编译时的include头文件搜索路径、各默认路径通常用于存放何种头文件、gcc编译器搜索头文件时不会去搜索默认路径中的子目录怎么办【头文件的目录嵌套】?
这里面我写了如何查看链接器的默认搜索目录。这里边就列举了的搜索路径。值得注意的是:在上面的路径中,… 表示父目录。工具链在运行时会解析这些相对路径并转换为实际的绝对路径。在下面的目录结构下:因为bin/../实际上指向的是 bin 目录的父目录。原创 2024-12-31 11:30:27 · 1330 阅读 · 0 评论 -
在C语言中,字符指针“char *name”和字符数组“char name[]“各自适用哪些场景?
在嵌入式编程中,和。原创 2024-12-30 15:20:52 · 386 阅读 · 0 评论 -
在Linux嵌入式编程中,与内存相关的堆(Heap)和栈(Stack)有什么区别?Linux中堆、栈、数据段(存储全局变量)、代码段的内存布局是怎么样的?各种变量的分配区域是怎么样的?
在基于 IMX6ULL 的 Linux 嵌入式编程中,堆(Heap)和栈(Stack)是两种不同的内存分配方式,各自具有不同的特点和用途。malloccallocreallocfreevalgrindulimit -s通过合理使用堆和栈,可以优化程序的性能和内存管理,特别是在资源有限的嵌入式环境中。原创 2024-12-30 15:19:43 · 877 阅读 · 0 评论 -
详解C语言中的关键词:extern以及它需要注意的事项
extern是C语言中一个非常重要的关键字,用于声明变量或函数的,即在当前文件中使用另一个文件中定义的变量或函数。以下是externexternexternexternexternextern主要用于跨文件访问全局变量。main.cglobalVarglobalVarglobal.c虽然函数声明默认具有外部链接性,但你仍可以显式使用extern,尽管很少需要这样做。函数的外部声明通常通过头文件实现,因此实际项目中很少需要手动写extern。原创 2024-12-24 08:37:52 · 2537 阅读 · 0 评论 -
在一个C工程文件中,如果一个函数要引用另一个文件中的函数,并不是用extern进行声明,而是在包含的头文件中进行声明
在函数内部使用extern不是正确的做法,函数声明应放在文件顶部或通过头文件进行管理。如果来自其他文件,直接包含其声明即可。原创 2024-12-24 07:49:46 · 309 阅读 · 0 评论 -
C语言的strncpy()函数在什么情况下会添加字符串末尾符‘\0‘,又什么情况下不会添加?
你要想使dst成为一个符合C语言解析规范的字符串,比如要让printf函数能处理这个dst字符串,你就需要手动把最后一位置为。假如src是一个1000长度的字符串,那么此时由于1000=1000,那么。假如src是一个1100长度的字符串,那么此时由于1100>1000,此时。假如src是一个80长度的字符串,那么此时由于80<1000,那么。会拷贝src中的1000个字符到dst,并且不会自动在末尾添加。个字符,那么显然dst的末尾不是。,此时,如果src本身就以。结尾,那么dst的末尾也为。原创 2024-12-23 16:30:19 · 486 阅读 · 0 评论 -
字符串末尾符‘\0‘和数字0的ASCII编码是不一样的
'\0'和数字字符'0'的 ASCII 编码不同'\0'的 ASCII 编码是0。'0'的 ASCII 编码是48。数字0是一个整数,与 ASCII 表无关,但它的二进制值与'\0'相同。原创 2024-12-23 16:29:35 · 990 阅读 · 0 评论 -
为什么在网络套接字编程中对于recvfrom()收到的数据的缓存数组要预留一个位置并把这个位置置为字符‘\0‘?
的作用是将接收到的数据的末尾标记为字符串结束符 ‘\0’,使得数据可以被正确地作为 C 字符串 使用。这是特别重要的,因为没有 ‘\0’ 终结符,许多字符串处理函数(如 printf 或 strncpy)就无法正确地计算字符串的长度或打印字符串。C 字符串是以 ‘\0’ 作为终结符的,因此在操作字符串时,必须确保其末尾有 ‘\0’。的第三个参数999表示接收最多 999 字节的数据并存储到 aRecvBuf 中,aRecvBuf数组的大小为1000,那为什么这里不是最多接收1000字节呢?原创 2024-12-23 15:50:27 · 141 阅读 · 0 评论 -
C语言中,数组的指针的递增运算会指向数组的下一个元素
在 C 语言中,数组的名称实际上是一个指针,指向第一个元素。通过指针递增 (++) 可以访问数组中的下一个元素。对于defname,它是指向字符串指针数组元素的指针,每次递增都会指向数组中的下一个字符串指针。这是完全合法且常见的用法。原创 2024-12-21 18:42:31 · 389 阅读 · 0 评论 -
gcc的链接器的相关知识要点(库的书写顺序、搜索库的路径、库的全名....)
链接顺序规则为:被依赖的库应该放在依赖它的库之后。换种说法,越是被别人调用的越底层的库,就越放在后面;越是调用别人的越上层的库,就越放在前面。比如我在Makefile中书写规则时,如果有库ts和库m需要链接,并且库ts需要依赖于库m这里不作具体的原因分析,这就是gcc的一个规则和机制,死记住就行了。原创 2024-12-20 19:57:08 · 490 阅读 · 0 评论 -
C语言初始化一个结构体的时候,并不是是否每个成员都需要初始化,那没有初始化的量值为多少呢?
在C语言中,初始化结构体时并不是必须为每个成员显式地赋值。如果某些成员没有被显式初始化,编译器会按照一定规则为这些成员赋默认值。此时由于 g_tTouchscreenDev 是一个全局变量或静态变量,则ptNext会被初始化为空指针,即值为。我初始化的代码可否不初始化成员。原创 2024-12-20 15:31:06 · 301 阅读 · 0 评论 -
C语言中,假如我一个C文件包含了两个头文件,而两个头文件中都有对同一个宏或结构体的定义,编译时如何处理?
编译器通常不会报错,因为重复的定义是相同的,这种情况在实际开发中是允许的。这种情况下,MAX都定义为100,编译器不会报错。编译器会报错,指出宏的重新定义问题。在C语言中,如果两个头文件中定义了同名的结构体,可能会引发冲突,具体取决于它们的定义是否完全相同以及如何使用这些结构体。1. 如果结构体定义完全相同。原创 2024-12-20 10:58:25 · 382 阅读 · 0 评论 -
关于顶层Makefile文件中的语句`obj-y += display/`和子目录Makefile文件中的语句`obj-y += disp_manager.o`的理解
是告诉顶层 Makefile 或构建系统进入display子目录,递归构建该目录中的目标文件。是将文件(它通常由编译生成)加入到最终的构建目标中。核心概念obj-y是一个列表,它包含了所有参与最终构建的目标文件或子目录。是将子目录的目标文件列入编译列表,具体的文件由子目录中的Makefile决定。是明确指定一个目标文件(如.o文件),它会参与最终的构建过程。您的理解方式非常准确!原创 2024-12-17 21:04:57 · 343 阅读 · 0 评论 -
目标文件或可执行文件中的符号信息和调试信息是怎么回事儿?
符号信息:包括程序中的函数、变量的名称和地址。调试信息:包括源代码行号、变量类型、函数调用信息等,用于调试时映射源代码和机器代码。执行strip命令会去除这些信息,减少文件大小,但也使得调试变得更加困难,因为我们无法再查看源代码中的变量、函数名等符号。原创 2024-12-17 13:40:38 · 911 阅读 · 0 评论 -
Visual Studio Code(VS code-VScode)安装及使用经验、技巧汇总
VisualStudioCode(VScode)是一个轻量化的代码查看、书写工具,支持很多语言,挺不错的。假如你添加了一个C的工程目录,它能自动分析代码中的定义关系哦。原创 2024-12-17 11:26:41 · 2718 阅读 · 0 评论 -
C语言中A文件中的代码调用B文件中的某个函数,假如B文件中这个函数需要某个头文件中定义的某些东西,那么A文件中要不要包含这个头文件需要视具体情况而定。
比如:在C语言中,假如文件A调用的函数在文件B中被定义,而函数DisplayInit()的函数体中用到了结构体“struct DispOpr”,这个结构体是在头文件disp_manager.h中定义的,显然,文件B中是要包含头文件disp_manager.h的,那么现在问题来了,请问文件A中是否也要包含头文件disp_manager.h?文件A是否需要包含如果文件A中直接使用了(例如定义变量、传递参数、访问成员),那么文件A需要包含,因为只有包含这个头文件,文件A才能知道结构体的完整定义。原创 2024-12-16 22:06:20 · 220 阅读 · 0 评论 -
在C语言中,访问结构体的成员时,什么时候用`.`【符号点】,什么时候用符号`->`?
当你有一个指向结构体的指针时,使用箭头运算符来访问结构体成员。:当你有一个结构体变量时,使用点运算符来访问它的成员。的情况取决于你是否通过结构体指针来访问。在C语言中,访问结构体成员时,使用。原创 2024-12-16 20:27:24 · 255 阅读 · 0 评论 -
C语言中怎样将NULL定义为空指针?空指针的具体值其实为0哈,即地址值为0的指针为空指针。
void0void0。原创 2024-12-16 19:25:59 · 507 阅读 · 0 评论 -
C语言结构体的初始化时并不会调用其成员函数
时,会不会运行函数FbDeviceInit()、函数FbDeviceExit()、函数FbGetBuffer()、函数FbFlushRegion()。答:时,运行函数。原创 2024-12-16 19:13:57 · 181 阅读 · 0 评论 -
C语言中,const 关键字的本质作用是什么?const char *point1、char *const point2、const char *const point3等的区别是什么?
声明形式能否修改指针指向能否修改指向内容可以不可以不可以可以不可以不可以通过这种理解,可以根据需要选择合适的指针类型以确保数据的正确性和安全性。原创 2024-12-15 16:34:45 · 541 阅读 · 0 评论 -
C/C++的关键词static加在函数定义前、全局变量前和函数内的变量前有什么作用?(分别是限制函数和全局变量的作用域在当前文件内和函数调用的整个期间内保留其值而不是每次初始化其值)
在你的代码中,原创 2024-12-15 11:38:35 · 389 阅读 · 0 评论 -
C/C++包含头文件的两种方式:尖括号方式 (<>)和双引号方式 (““)的区别
如果系统路径中存在与自定义头文件重名的头文件,使用。的查找顺序会影响结果,应尽量避免这种冲突。原创 2024-12-15 10:36:48 · 232 阅读 · 0 评论 -
关于C/C++中typedef为一个类型(包括结构体类型)同时定义多个别名、定义指针类型别名的语法
有了这个定义,那么有下面的用法a1 x = 5;// 等价于 int x = 5;a2 y = 10;// 等价于 int y = 10;a3 z = 15;// 等价于 int z = 15;这段代码使用了typedef,它的作用是为类型创建别名。解析定义了a1为int类型的别名。定义了a2为int类型的别名。定义了a3为int类型的别名。定义了b1为int*(指向int类型的指针)的别名。使用示例a1 x = 10;// 等价于 int x = 10;a2 y = 20;原创 2024-12-13 22:33:04 · 409 阅读 · 0 评论 -
C/C++的“文件包含”处理探究
所谓“文件包含”处理是指一个源文件可以将另一个源文件的全部内容包含进来,即将另外的文件的内容包含到本文件之中。C/C++提供了#include命令来实现“文件包含”的操作。C/C++在编译时并不是对两个文件分别进行编译,而是在编译预处理阶段把被包含文件的内容也加到主文件中,得到一个新的源程序,然后对这个新的源程序进行编译。常用在主文件头部的被包含的文件通常称为头文件,常以后缀“.h”或“.hpp”结尾。当然用后缀“.c”或“.cpp”甚至没有后缀也是可以的。本博文就“文件包含”操作进行一些探究。答案是可以原创 2022-07-08 19:02:11 · 1655 阅读 · 0 评论 -
C/C++的“文件包含”处理时头文件被重复包含的问题探究及解决方法(用最简单的例子进行说明)
C/C++的“文件包含”处理时头文件被重复包含的问题探究及解决方法原创 2022-07-08 15:45:40 · 3735 阅读 · 0 评论 -
从cmath文件看名字是怎样被添加到命名空间std中的
从cmath文件看名字是被添加到命名空间std中的原创 2022-07-07 15:25:06 · 318 阅读 · 0 评论 -
将VS2013的C/C++标准库math中的59个函数过一遍
将VS2013的C/C++标准库math中的59个函数过一遍原创 2022-07-07 14:40:05 · 1795 阅读 · 0 评论 -
MATLAB、C++、OpenCV、Python、Python-Numpy近似值(取整)求取函数总结【round()、ceil()、floor()、fix()】
MATLAB、C++、OpenCV、Python、Python-Numpy近似值(取整)求取函数总结【round()、ceil()、floor()、fix()】原创 2022-06-29 11:50:57 · 2630 阅读 · 0 评论