C/C++
文章平均质量分 52
caisense
这个作者很懒,什么都没留下…
展开
-
Clion安装配置教程 [C语言编程for Windows]
参考http://www.sunmey.cn/thread-129-1-1.html 原文地址:http://www.sunmey.cn/thread-129-1-1.html 1.Clion简介: 产品概述: CLion 是一款专为开发C及C++所设计的跨平台IDE。它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助 开发人员在Linux、O转载 2017-05-02 12:09:56 · 18014 阅读 · 0 评论 -
C++嵌套vector(二维矩阵)的初始化
初始化一个嵌套的char型嵌套vector,已知C++11允许vector用花括号{}的初始方式,vector元素以逗号隔开,例如:vectorchar>> board = {'X', 'X', 'X'};推广之,易知嵌套vector就是内层vector作为外层vector的元素,初始化用两层花括号,第一层花括号之间用逗号隔开:vectorvectorchar>> board =原创 2018-01-16 01:30:49 · 16222 阅读 · 0 评论 -
模板非类型形参的详细阐述
http://m.blog.csdn.net/u012999985/article/details/50780311关于模板的非类型形参,网上有很多内容,C++primer只有大概一页的阐述,但是都不够清晰详细。下面我尽可能从自己的角度去给大家描述一下非类型形参的相关细节。如果想进一步理解非类型形参以及模板内容可以阅读C++template这本书,在4.1节,8.3.3节,13.2节都有相关解转载 2018-01-04 12:49:40 · 412 阅读 · 0 评论 -
c++中pair<>的成员无法初始化make_pair为NULL
将一个std::pair <> 类型变量output用make_pair()初始化为(“data”, NULL),其中OpNode是自定义的数据类型.std::pair<string, OpNode*> output = make_pair("data", NULL);编译器报错,说类型不匹配 解决办法:将NULL强制转换为OpNode*类型指针:std::pair<string, OpNode*原创 2017-09-26 21:31:25 · 1025 阅读 · 0 评论 -
do{...}while(0)的意义和用法
linux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{…}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免引用的时候出错:举例来说,假设你需要定义这样一个宏:#define DOSO转载 2017-09-15 23:19:46 · 400 阅读 · 0 评论 -
C语言问题 关于implicit declaration of function
问题描述:在linux中用gcc编译三个文件:$gcc linktable.c menu.c test.c -o menu -lm产生警告:test.c: In function ‘main’:test.c:20:2: warning: implicit declaration of function ‘MenuConfig’ [-Wimplicit-function-declaration]原创 2017-05-30 02:04:57 · 24336 阅读 · 0 评论 -
定义指针类型时*号位置与功能的关系
问题: 常常看到这样的句子:int* a和int *a 请问这*号紧靠在类型后面和紧靠变量前面,在含义上有什么区别吗? 在使用变量时有什么区别吗?回答: 没有区别,但有人建议写成紧靠变量, 比如你想声明两个指针a,b,如果紧靠类型,容易出现错误int* a,b以下文字摘自<高质量C++编程指南>:修饰符 * 和 & 应该靠近数据类型还是该靠近变量名,是个有争议的活题。若将修饰符 * 靠近数据类原创 2017-05-29 22:07:01 · 3780 阅读 · 0 评论 -
C++引用作为函数参数
有了变量名,为什么还需要一个别名呢?C++之所以增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能。到目前为止我们介绍过函数参数传递的两种情况。1) 将变量名作为实参和形参 这时传给形参的是变量的值,传递是单向的。如果在执行函数期间形参的值发生变化,并不传回给实参。因为在调用函数时,形参和实参不是同一个存储单元。【例6.18】要求将变量i和j的值互换。下面的程序无法实现此要求。#in转载 2017-05-28 21:31:25 · 426 阅读 · 0 评论 -
c语言 函数指针
定义原型:返回类型 (*指针名)参数列表例如:#include <stdio.h>//以下是函数指针的两种声明办法,第一种是在形参列表中声明,第二种是在外部声明int ff(int(*p)(int,int),int a,int b)//原始写法,在函数ff的参数列表中定义函数指针p,阅读不便{ return p(a,b);}//改进写法 易懂typedef int(*Pfunc)(in原创 2017-05-28 14:52:31 · 404 阅读 · 0 评论 -
C++:带有const修饰的指针解读
通过实例来看看const所修饰的指针使用方法:总结: const int *p和int const *p等效,p可以指向别处,但不能通过 *p来操作p所指的数.(可以记为:const修饰 *p) int * const p , p不能指向别处,但p所指的数可以用*p来操作.(记忆:const修饰p) const int * const p ,p不能指向别处,且p所指的数不能用*p来操作.(前原创 2017-05-09 00:53:35 · 296 阅读 · 1 评论 -
C语言 结构体指针强制转换
最近写c程序遇到的结构体指针强转的坑,记录一下. 是一个简单的菜单程序,程序用到链表,表中存储了9个不同命令.每次将用户输入的命令与表中存储的命令名作对比(遍历查询),然后执行相应功能.总体结构:linktable.h:定义通用模块化链表数据结构,以及相关操作linktable.c:实现头文件中定义的链表操作main.c:主函数通用链表节点:(抽象定义)typedef struct LinkT原创 2017-05-27 22:45:05 · 14340 阅读 · 4 评论 -
可重入(reentrant)函数
什么是函数的可重入性?可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。可重入函数:重点内容不为连续的调用持有静态数据。不返回指向原创 2017-05-24 20:45:07 · 3224 阅读 · 0 评论 -
C/C++的struct和typedef struct
转自: http://www.cnblogs.com/qyaizs/articles/2039101.html分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如转载 2017-05-13 16:41:08 · 173 阅读 · 0 评论 -
c++中“箭头(->)”和“点号(.)”操作符的区别
转自http://blog.csdn.net/gyymen/article/details/4962873 首先介绍一下C++中的结构。对于一个结构:struct MyStruct { int member_a; }; 如果有个变量MyStruct s,那么使用其中的成员元素时可以用:s.member_a = 1; 如果采用指针方法访问,比如MyStruct * ps,那么同样转载 2017-05-05 00:56:48 · 359 阅读 · 0 评论 -
C++继承与派生
不同继承方式的影响主要体现在: 派生类成员对基类成员的访问权限 通过派生类对象对基类成员的访问权限三种继承方式 公有继承:public 私有继承:private 保护继承:protected公有继承(public)基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。 派生类中的成员函数可以直接访问基类中的public和pr原创 2017-05-11 21:45:10 · 328 阅读 · 0 评论 -
C/C++语言面试 笔记
1.判断输出#include <stdio.h>main(){ float a = 0.7; if(a < 0.7) printf("C"); else printf("C++");}答案是”C”,因为a是将0.7存储为单精度浮点数,而第二行中a<0.7 常数0.7在c语言中以双精度存储.因此将双精度的正浮点数转换成单精度正浮点数会损失原创 2017-04-27 16:47:55 · 386 阅读 · 0 评论 -
C++ STL总结
刷leetcode用到的STL总结: 1. map m 由许多键值对组成(可以理解为pair),map中k不能重复.map中键值对的先后顺序按k值排序,即若用迭代器从map.begin()开始遍历到end(),就是按k值升序遍历的.插入的方法有:m.insert(make_pair(k, v)); //调用insert方法m[k] = v; //调用[]运算符,map的特色之一原创 2018-01-17 20:52:56 · 197 阅读 · 0 评论