C/C++语言琐碎的知识点积累
记录c/C++零碎知识点
KiranWang
某互联网大厂资深研发工程师。
展开
-
C语言强符号与弱符号
分析:a.c中的x是弱符号,占用4Bytes,b.c中的x y为强符号,占用2Byes,所以。分析:a.c中的a和b.c中的a和b都是弱符号,如果一个符号在所有目标文件中都是弱符号,则。开始写4Bytes,所以最终x=0x5678,y=0x1234。,所以b.c中的a,sizeof的大小是2;的时候选择空间最大的那个,也就是最终。的时候选择的是a.c中的int a;的时候选择了b.c中的强符号x和y,查看a.o中的符号表。查看a.out符号表。查看a.out符号表。原创 2024-05-05 17:14:48 · 283 阅读 · 0 评论 -
C++拷贝构造函数
#include <iostream>using namespace std;/*二个特殊的构造函数1)默认无参构造函数 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空2)默认拷贝构造函数 当类中没有定义拷贝构造函数时,编译器默认提供一个默认拷贝构造函数,简单的进行成员变量的值复制*/class Test{public: Test() { cout << "无参构造" << endl; } Te.原创 2021-10-28 11:56:04 · 326 阅读 · 0 评论 -
从C语言中函数指针与函数的指向关系到C++中函数重载与函数指针结合
本篇主要梳理下C语言中函数指针指向函数的三种形式,以及C++中函数指针与重载函数是如何结合的。一、C语言中函数指针与函数的三种指向关系 我们先来定义一个函数,如下:int fun(void){ printf("in fun\n"); return 0;} 下面代码解释函数指针的三种定义方式 //函数指针指向函数的方式 //第一种方式...原创 2020-03-09 18:04:56 · 388 阅读 · 0 评论 -
C语言之二叉树
1、二叉树的基本概念(1)、形如如下图所示的数据结构就叫做二叉树(2)、二叉树的节点数据结构struct TreeNode{ int val; //节点的存储的数据 struct TreeNode *pLeft; //左子节点指针 struct TreeNode *pRight; //右子节点指针};(3)、...原创 2019-10-23 21:20:01 · 456 阅读 · 0 评论 -
C语言之二重指针
二重指针的C语言表示:int **p,它表示指针的指针,二重指针其实就是指针数组指针。二重指针一般用的场合:(1)二重指针指向一重指针的地址。(2)二重指针指向指针数组的地址。(3)实践中...转载 2019-08-05 09:51:21 · 539 阅读 · 0 评论 -
C语言两个函数对比
1、int *p = NULL;void ds_free(void *p){ printf("ds_free:0x%x\n",p); if(p) { free(p); p = NULL; } printf("ds_free:0x%x\n",p);} int main(void){ p = (int *)malloc(4*sizeof(int)); ...原创 2019-07-16 17:15:56 · 569 阅读 · 0 评论 -
C语言之可重入函数 和不可重入函数
可重入函数 在 实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料的后果。那么什么是可重入函数呢?所谓可重入是指一个...转载 2019-01-25 14:42:35 · 2578 阅读 · 1 评论 -
float在内存中的存储方式
float 在内存中的储存方式C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit, double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double...转载 2018-11-27 09:59:25 · 2242 阅读 · 0 评论 -
C 语言字符串处理积累
写在前面:本文主要用来积累字符串处理的各种方式。正文:1、目的:函数输入一个字符串,要求去掉字符串中的行首和行尾的空格后输出。 实现函数和测试代码如下:#include <stdio.h>#include <string.h>//该函数的作用为:输入一个字符串,删掉行首和行尾的空格void strtrim (char * p_st...原创 2018-11-14 10:08:30 · 206 阅读 · 0 评论 -
环形缓冲区的实现
1、https://blog.csdn.net/p23onzq/article/details/807507452、https://blog.csdn.net/maowentao0416/article/details/81984269转载 2018-11-02 15:45:12 · 690 阅读 · 0 评论 -
C语言结构体中的冒号用法
结构体中的冒号表示位域。位域出现的原因是由于某些信息的存储表示只需要几个bit位就可以表示而不需要一个完整的字节,同时也是为了节省存储空间和方便处理。其表示形式为:struct 位域结构名{ 类型说明符 位域名:位域长度}例如:struct bi...转载 2018-09-28 17:48:10 · 372 阅读 · 0 评论 -
C语言之哈希表
写在前面:项目中用一张哈希表来存储设备的属性等信息,用到了哈希表这块,因为对哈希表用的并不是太多,认识没有那么深刻,所以,这里花时间对哈希总结以及写代码调试了一下,加深点印象。正文:1、哈希表的作用:为了根据数据部分的关键内容,计算出对应节点完整数据的内存地址。如果用链表的话,链表如果长度很长,就会需要花费较多的时间来遍历链表。为了解决效率问题,哈希表应运而生。2、哈希表的排布状况,画...原创 2018-08-11 11:36:05 · 9491 阅读 · 7 评论 -
C语言之指针数组和数组指针
写在前面:指针数组和数组指针在平时本身用的就不算太多,但偶尔项目中用到的时候会一阵迷糊,所以这里先把这两种关系写下来,后续遇到问题的时候,有依据可查。 正文:1、先明确一个C语言运算符的优先级关系:()>[ ]> *;2、然后再来看: int (* p)[ 5]; 根据优先级,先看( )内,p是一个指针,理解到这里,即不管p后面怎么样,p就是一个指针,后面的[ ]又...原创 2018-08-10 18:55:25 · 10243 阅读 · 2 评论 -
C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)
转自 : https://blog.csdn.net/21aspnet/article/details/6729724 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就...转载 2018-07-20 16:25:46 · 13778 阅读 · 0 评论 -
C语言宏定义中 ## 和#的作用
写在前面: 写这篇blog也是透漏出了自己C语言有些比较偏的知识点中确实没有掌握好的弱点,还是那句话,不怕有问题,有问题就要及时弥补。 正文: 1、## 作用: 先看例子吧: 从上面例子可以总结出,##的作用就是把2个宏参数连接为1个数。 当然也可以实现字符串的连接,如下:2, #作用 先看例子: ...原创 2018-07-19 09:54:56 · 27768 阅读 · 0 评论