
c和c++
文章平均质量分 62
bjzhaoxiao
这个作者很懒,什么都没留下…
展开
-
va_start和va_end使用详解
函数参数的传递原理 函数参数是以数据结构:栈的形式存取,从右至左入栈。 首先是参数的内存存放格式:参数存放在内存的堆栈段中,在执行函数的时候,从最后一个开始入栈。因此栈底高地址,栈顶低地址,举个例子如下:void func(int x, float y, char z); 那么,调用函数的时候,实参 char z 先进栈,然后是 float y,最后是 int x,因此在内...转载 2020-01-06 20:19:36 · 153 阅读 · 0 评论 -
Ubuntu安装Clang\Clang版本切换
https://blog.youkuaiyun.com/DumpDoctorWang/article/details/84567757转载 2020-01-03 11:39:43 · 1943 阅读 · 0 评论 -
C++ 编译器对C++11、14、17的支持情况
https://blog.youkuaiyun.com/adolph58/article/details/88719943转载 2020-01-02 19:56:34 · 1086 阅读 · 0 评论 -
gcc汇编基本手册
添加调试信息:gcc -c -gstabshello.sgcc hello.o -o hello原创 2019-10-29 17:52:32 · 593 阅读 · 0 评论 -
手动安装gcc8.3.0
Ubuntu系统是自带GCC安装指令的apt install gcc,当前apt源中gcc版本为5.4.0,版本太低,推荐手动安装gcc8.3.0手动安装gcc8.3.0之前需要先确保安装gcc环境依赖GMP 4.2+ 、 MPFR 2.3.1+ 、 MPC 0.8.0+,否则会报出以下错误configure: error: Building GCC requires GMP 4.2+, ...转载 2019-10-12 18:09:12 · 3588 阅读 · 1 评论 -
C++对象模型之简述C++对象的内存布局
转帖自:https://blog.youkuaiyun.com/ljianhui/article/details/45903939在C++中,有两种类的成员变量:static和非static,有三种成员函数:static、非static和virtual。那么,它们如何影响C++的对象在内存中的分布呢? 当存在继承的情况下,其内存分布又是如何呢?下面就一个非常简单的类,通过逐渐向其中加入各种成员,来逐一分析上述...转载 2018-05-08 13:09:21 · 213 阅读 · 0 评论 -
虚继承及继承的内存布局
1.为什么需要虚继承如下图所示如果访问Der::Fun or Der::m_nValue就会带来二义性,无法确定是调用Base1的还是Base2的,所以为了解决多重继承情况下成员访问的二义性,引入了虚继承机制。一般继承:虚继承:2.虚继承实现在虚继承下,Der通过共享虚基类SuperBase来避免二义性,在Base1,Base2中分别保存虚基类指针,Der继承Base1,Base2,包含Base1...转载 2018-05-08 12:14:07 · 1030 阅读 · 0 评论 -
__I、 __O 、__IO volatile是什么?怎么用?(作者写的太棒了,给赞)
转自:https://blog.youkuaiyun.com/daa20/article/details/42339695__I、 __O 、__IO是什么意思? 这是ST库里面的宏定义,定义如下:#define __I volatile const /*!< defines 'read only' permissions */ #define __O volatile /*!< defines ...转载 2018-04-27 12:41:05 · 236 阅读 · 0 评论 -
singularity linux下用gcc如何生成预处理、汇编等文件
转自:https://www.cnblogs.com/dpf-learn/p/6127750.htmlsingularitylinux下用gcc如何生成预处理、汇编等文件【gcc -E test.c -o test.i------>预处理文件生成.i 文件。】1、c语言程序生成过程C语言程序的生成过程可以简单的分为:编辑、预处理、编译、汇编、链接五个阶断。下面所有的操作以hello worl...转载 2018-04-27 11:30:10 · 294 阅读 · 0 评论 -
C++对象模型之详述C++对象的内存布局
在C++对象模型之简述C++对象的内存布局一文中,详细分析了各种成员变量和成员函数对一个类(没有任何继承的)对象的内存分布的影响,及详细讲解了如何遍历对象的内存,包括虚函数表。如果你在阅读本文之前,还没有看过C++对象模型之简述C++对象的内存布局一文,建议先阅读一下。而本文主要讨论继承对于对象的内存分布的影响,包括:继承后类的对象的成员的布局、继承对于虚函数表的影响、virtual函数机制如何实...转载 2018-05-08 13:10:30 · 118 阅读 · 0 评论 -
unordered_map 与 map 的区别和联系
c++中map与unordered_map的区别头文件map: #include < map >unordered_map: #include < unordered_map >内部实现机理map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除,添加等一...转载 2018-05-08 13:55:01 · 328 阅读 · 0 评论 -
linux下的so、o、lo、a、la文件的区别
o: 编译的目标文件a: 静态库,其实就是把若干o文件打了个包so: 动态链接库(共享库)lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息 1 libtool的工作原理 libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用li...原创 2018-07-26 19:00:33 · 19928 阅读 · 0 评论 -
linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径。自己指定的路径就不说了,这里说明一下系统自动搜索的路径。 【1】include头文件路径jacob@ubuntu:~/study/boost$ `gcc -print-prog-name=cc1plus` -vignoring nonexiste...转载 2018-08-03 18:16:58 · 3558 阅读 · 0 评论 -
@echo 与 echo的区别
@echo运行时 隐藏命令(不在terminal上显示)echo运行时显示命令(在terminal上显示)同理@cp 与 cp 复制命令 不显示/显示转载 2018-07-27 17:25:42 · 6053 阅读 · 0 评论 -
linux下gcc默认搜索头文件及库文件的路径
linux下gcc默认搜索头文件及库文件的路径一、头文件gcc 在编译时如何去寻找所需要的头文件:※所以header file的搜寻会从-I开始※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH※再找内定目录/usr/include/usr/local/include/usr/lib/gcc-lib/i...转载 2018-08-06 11:24:49 · 1127 阅读 · 0 评论 -
堆破坏实例
int main(){ /* heap_broken.cpp int n; char* p = NULL; while (1) { p = (char*)malloc(10); strcpy(p, "01234567890lllllllllllllllllllllllllllllllllllllll"); p = (char*)malloc(10); }}原创 2018-04-24 12:51:14 · 239 阅读 · 0 评论 -
栈破坏实例
#include <stdio.h>int main(){ char name[8]; printf("Please type your name: "); //输入大于8个字符。 gets_s(name); int a = 4; printf("Hello, %s!", name); //scanf("%s", name); return 0;}...原创 2018-04-24 12:53:47 · 498 阅读 · 0 评论 -
692. Top K Frequent Words
/*Acception of mine use buket*/class Solution {public: vector<string> topKFrequent(vector<string>& words, int k) { vector<string> ans; unordered_map<string, int> mp; vec...原创 2018-05-09 13:08:07 · 194 阅读 · 0 评论 -
449. Serialize and Deserialize BST
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; *//*class Codec...原创 2018-05-09 16:24:01 · 152 阅读 · 0 评论 -
355. Design Twitter
/*整个数据是一个map,key是userid,value是一个user对象user中有自己的fans, follows 有自己的消息链取前10个 浏览自己的fans表 (自己是自己的fans) 把每个fans的消息入堆 然后从堆中找出10个最新的。*/typedef struct user user_t;typedef struct news news_t;str...原创 2018-05-10 10:49:30 · 164 阅读 · 0 评论 -
127. Word Ladder
/*Time Limit Exceeded*//*class Solution {public: int ladderLength(string beginWord, string endWord, vector<string>& wordList) { queue<string> tovisit; tovisit.push(beginWord); int d...原创 2018-05-10 10:54:29 · 146 阅读 · 0 评论 -
449. Serialize and Deserialize BST
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; *//*class Codec...原创 2018-05-10 10:59:17 · 118 阅读 · 0 评论 -
快速排序C++实现
快速排序是对冒泡排序的一种改进,冒泡排序一次只能移动一次,而快速排序一次就能将大于轴值的数移动到轴值的后面(升序),减少了移动的次数#include<iostream>using namespace std;int oneSort(int a[],int x,int y); //一次划分函数void qSort(int a[],int,int); //快速排序函数int main...转载 2018-05-08 09:10:05 · 2120 阅读 · 0 评论 -
460. LFU Cache
/*unordered_map<int, my_val_t*> m_node; // map node map<int, my_val_t*> m_fr; // map frenquency int m_cap; // capacity算法思想: 另个map,1. 1个...原创 2018-05-10 11:21:31 · 113 阅读 · 0 评论 -
/C++ Volatile关键词深度剖析
本文转自 https://blog.youkuaiyun.com/c359719435/article/details/51490060背景前几天,发了一条如下的微博 (关于C/C++ Volatile关键词的使用建议): 此微博,引发了朋友们的大量讨论:赞同者有之;批评者有之;当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile关键词,来佐证我的微博观点。而这,正是我写这篇博文的初衷:本文,...转载 2018-04-26 13:39:05 · 174 阅读 · 0 评论 -
c面试题test()
第一:请问运行Test 函数会有什么样的结果?void GetMemory(char *p){p = (char *)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);}【Jacob】 程序崩溃,str是一个指针,它的值是NULL,GetMemory...原创 2018-04-24 18:33:41 · 554 阅读 · 0 评论 -
捷通华声一道面试题 base derived
class Base{private: int Y;public: Base(int y = 0) { Y = y;cout << "Base(" << y << ")\n"; }; ~Base() { cout << "~Base()\n"; }; virtual void print() { cout <<原创 2018-04-24 17:43:40 · 1261 阅读 · 0 评论 -
C++ prime 学习笔记--友元访问私有
1. 友元访问私有变量1.1友元是一个函数,print_private友缘函数可以放到public,protected,private段中。private 只能被类的成员函数访问,或者类的友元访问。class FriendAccessPirvate{//friend void print_private(FriendAccessPirvate& fap); //OKprotected //...原创 2018-04-24 16:48:51 · 544 阅读 · 0 评论 -
c语言声明和定义
声明: 普通的声明,它所说明并非是自身,而是其他地方创建的对象定义: 他为对象分配了内存,让这个对象实实在在的占据了系统的一块内存。理解C语言声明的优先级A 声明从它的名字开始读取,然后按照优先级顺序依次读取。B 优先级从高到底依次是: B1 声明中被括号括起来的那部分 B2 后缀操作符: 括号()表示这是一个函数 方括号[]...原创 2018-04-24 13:10:15 · 457 阅读 · 0 评论 -
Struct 和class 的区别。
Struct 和class 的区别。【others】struct是一种结构体类型的标志,它和C++中的Class很相似。 C++中两者的唯一区别在于:l Class定义中默认情况下的成员都是私有的,而结构Struct 定义中默认情况下的成员都是公有的。l 在C中,结构中不能有成员函数,而在C++中可以有成员函数.【Jacob】但struct 中可以有函数指针。/*编译错误*/#includ...原创 2018-04-24 12:22:47 · 238 阅读 · 1 评论 -
static_cast 和 dynamic_cast 的区别
本文很多题目都是来源用于网上,如有侵权,请及时通知。和别人不同的是,有些题目加上了自己的思考。标记为【Jacob】第一部分:简答题1. 一下C++中static_cast 和 dynamic_cast 的区别。答:static_cast 用于有比较明确定义的变换,包括不需要强制转换的变换。【others】l dynamic_cast 适用于类型安全的向下转换,常用在继承中的父类指针向子类指针的转...原创 2018-04-24 12:18:26 · 1642 阅读 · 1 评论 -
指针作为函数参数注意
#include <stdio.h>void free_delete(int *p){ if (NULL == p) return; free(p); p = NULL;}int main(){ /*free_delete函数中释放了p的内容,p的值没有改变还是指向已经释放的地址。 */ int *p = (int*)malloc(sizeof(int)); *p...原创 2018-04-24 12:41:21 · 259 阅读 · 1 评论