c/c++
c/c++基础总结
江南又旧雨
踏踏实实,简简单单,实实在在,做好当前,做好每一天!低头走路,莫问前程。
展开
-
C语言中"#"和"##"的用法
https://blog.csdn.net/baidu_33850454/article/details/79363033原创 2020-02-29 19:25:04 · 458 阅读 · 0 评论 -
指针和引用作为函数返回值
https://blog.csdn.net/Li_haiyu/article/details/82559494原创 2020-02-24 21:32:37 · 383 阅读 · 0 评论 -
c/c++模板实现链表、栈、列队
一、模板数组实现栈#include<iostream>using namespace std;const int SiZE=10;template<typename Type>class myStack{public: void init_stack() { stackTail= -1; } int pushStack(Type elm);...原创 2020-02-17 20:25:06 · 299 阅读 · 0 评论 -
c++_模板(template)
一、模板简单应用(比较大小)#include<iostream>using namespace std;template<typename Type>Type maax(Type num_first,Type num_secend){ Type maxNum = (num_first > num_secend)?num_first:num_secend...原创 2020-02-17 20:17:05 · 196 阅读 · 0 评论 -
c/c++语言_自定义strcpy函数以及字符串类string的实现
//编写strcpy函数char * strcpy(char *strDest, const char *strSorce){ assert((NULL!=strDest) && (NULL!=strSorce)); char *address = strDest; while((*strDest++ = *strSorce++) != '\0') ...原创 2020-02-17 19:42:16 · 533 阅读 · 0 评论 -
c/c++语言_日期时间以及文件操作
#include<fstream>#include<iostream>#include<string>#include<ctime>using namespace std;#pragma warning( disable : 4996)string DatetimeToString(time_t time){ tm *tm_ = l...原创 2020-02-16 19:09:34 · 1686 阅读 · 0 评论 -
c语言_测试大小端
大端:高字节在前,或者高位字节存储在低位端,0x1234,0x12存储在数组的前面;小端:低字节在前,或者高位字节存储在高位端,0x1234,0x12存储在数组的后面,后面为高位端#include<iostream>using namespace std;typedef union test{ unsigned int intPort; unsigned char...原创 2020-02-16 18:58:43 · 509 阅读 · 0 评论 -
c语言_顺序表(可变数组,变长数组,VLA)
一、#include"顺序表.h"#define Size 10typedef struct Table{ int *head;//声明一个名为head的、长度不确定的数据 int length;//记录当前顺序表的长度 int size;//记录顺序表的分配的存储容量}table;table initTable();int selectTable(table t,...原创 2020-02-16 14:53:52 · 773 阅读 · 0 评论 -
c语言_面试_十进制转换为二进制_数据取反(位域操作)
一、二、数据取反(位域操作)typedef union{ char uint8Num; struct { int bit0 : 1; int bit1 : 1; int bit2 : 1; int bit3 : 1; int bit4 : 1; int bit5 : 1; int bit6 : 1; int bit7 : 1; }u8Bit;}...原创 2020-02-16 16:32:25 · 976 阅读 · 0 评论 -
c语言_数制转换_任意进制间互相转换
一、任意进制间互相转换(链表结构实现)#include "stdio.h"#include"stdlib.h"#include <math.h>typedef struct node{ char elem; struct node *next;}stackLink;stackLink *stackPush(stackLink *top, char elem)...原创 2020-02-16 17:58:21 · 1462 阅读 · 0 评论 -
任意进制转换为十进制(十六进制转换为十进制)
unsigned long HextoDec(char *hex, int length){ int i; unsigned long rslt = 0; for (i = 0; i < length; i++) { switch (hex[i]) { case '0': hex[i] = 0;bre...原创 2020-02-14 17:10:46 · 1752 阅读 · 0 评论 -
重载和const形参
总结:顶层const:表示指针本身是一个常量;底层const:表示指针所指的对象是一个常量。顶层const不构成重载。原创 2019-11-06 10:23:14 · 99 阅读 · 0 评论 -
C++11 左值、右值、右值引用详解
左值、右值在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a = b+c, a 就是左值,其有变量名为a,通过&a可以获取该变量的地址;表达式b+c、函数int func()的返回值是右值,在其被赋值给某一变量前,我们不能通过变量名...原创 2019-11-05 09:50:07 · 85 阅读 · 0 评论 -
对vector对象的操作会使迭代器失效
vector对象可以动态的增长,但是也会有一些副作用。(1)不能在范围for循环中向vector对象添加元素。(2)任何一种可能改变vector对象容量的操作,比如push_back,都会使该vector对象的迭代器失效。string::size_typevector<int> size_type数组:size_tvector<int>...原创 2019-11-04 13:34:34 · 391 阅读 · 0 评论 -
c++11类型总结
char:char的大小和一个机器字节一样,存放机器的基本字符集wchar_t:类型用于确保可以存放机器最大扩展字符集char16_t和char32_t则为Unicode字符集服务。c++语言规定int至少和short一样大,long至少和int一样大,一个long long至少和long一样大。其中,long long 是C++11中新定义的。带符号和无符号...原创 2019-10-17 13:21:57 · 269 阅读 · 0 评论 -
c ++学习书籍汇总
(1)C++ Primer Plus 第6版 中文版链接:https://pan.baidu.com/s/1_TbfqaQZzCFFEi_vJpJwQw提取码:xd2w(2)C++ Primer中文版 第5版 [(美)李普曼,(美)拉乔伊,(美)默著]链接:https://pan.baidu.com/s/1u0DQe0McUKRucjn_DD5iYA提取码...原创 2019-10-15 11:16:39 · 829 阅读 · 0 评论 -
C++11新标准:decltype关键字
https://www.cnblogs.com/cauchy007/p/4966485.htmlhttps://blog.csdn.net/friendbkf/article/details/45541913转载 2019-10-14 15:54:47 · 180 阅读 · 0 评论 -
类中的常量(作用域为类的常量)
class Bakeery{private: const int Months = 12; //declare a constant? FAILS double costs[Months]; ...}这样是行不通的,因为声明类只是描述了对象的形式,并没有创建对象。因此,在创建对象前,将没有用于存储值得空间。下面有两种方法实现这个目标,并且效果一样。cl...原创 2019-10-14 14:35:13 · 332 阅读 · 0 评论 -
引用实现多态
函数参数引用基类,可以在函数调用时引用派生类,实现多态。但是如果直接引用,基类的引用可以指向派生类,但是不能再修改引用的指向,引用是一次性的指针,直接引用不能修改指向,因此不能实现多态,通过函数参数引用的方式可以实现多态。...原创 2019-10-12 16:21:24 · 2079 阅读 · 0 评论 -
typedef使用
typedef double real;//make real another name for doubletypedef char * myCharPointer;typedef const double * (*p_fun)(const double *,int );//p_fun now a type namep_fun p1=f1;//p1 points to t...原创 2019-10-12 14:34:10 · 98 阅读 · 0 评论 -
深入理解指针
使用指针调用函数:double pam(int);double (*pf)(int)=pam;double x=(*pf)(5);//这种形式虽然不好看,但是提示出代码使用的是函数指针。double y=pf(5);pf与(*pf)等价是有历史原因的,从c语言开始就有这问题。需要使用三个函数,如果有一个函数指针数组将会很方便。如何声明这样的数组呢?const do...原创 2019-10-12 13:48:32 · 158 阅读 · 0 评论 -
函数传值和传址(或者引用)
在c++中,类对象是基于结构的,因此结构编程方面的有些考虑因素也适用于类。例如,可按值将对象传递给函数,在这种情况下,函数处理的是原始对象的副本。另外,也可传递指向对象的指针,这让函数能够操作原始的对象。(1)传递数组:在函数传递数组时,参数是数组名,不用加取地址符号&,传递的是数组的首地址;(2)传递结构:在函数传递结构时,虽然结构和数组都可以存储多个数据项,单在涉及函数时,结构...原创 2019-10-12 11:06:18 · 631 阅读 · 0 评论 -
容器vector在函数中的参数传递
值传递: 形参改变不影响实参void fun(vector<int>v){}int main(){vector<int>v;fun(v)}引用传递 :形参改变影响实参void fun(vector<int>&v){}int main(){vector<int>v;fun(v);}指针传递:形参改变影响实参void ...原创 2019-10-12 10:11:09 · 255 阅读 · 0 评论 -
逻辑运算符细节
c++中逻辑OR和逻辑AND的运算符的优先级都低于关系运算符。x>5 && x<10将被解释为:(x>5) && (x<10)另外一方面,!运算符的优先级高于所有的关系运算符和算术运算符。因此,对表达式求反时候,必须使用括号!(x>5);而不是 !x>5and or not都是c++的保留...原创 2019-10-12 09:28:08 · 274 阅读 · 0 评论 -
C++11 之for 新解
前言 C++11这次的更新带来了令很多C++程序员期待已久的for range循环,每次看到javascript, lua里的for range,心想要是C++能有多好,心里别提多酸了。这次C++11不负众望,再也不用羡慕别家人的for range了。见链接:https://blog.csdn.net/hackmind/article/details/24271949...转载 2019-10-11 16:38:07 · 71 阅读 · 0 评论 -
数组的替代品
模板类vector和array是数组的替代品。模板类vectorvector是一种动态数组,使用堆分配内存,可以增、删、改、查,缺点是效率低。#include<vector>...using namespace std;std::vector<int> temp;int n;cin>>n;std::vector<double&g...原创 2019-10-11 16:12:03 · 235 阅读 · 0 评论 -
变长数组VLA
C99标准中,支持变长数组,即方括号[]中可以用为一个变量,但是很多编译器并不能很好地支持。c++11标准中,不支持变长数组,即方括号[]中必须为常量表达式。c++标准支不支持变长数组,并不重要,因为完全可以自己实现。变长数组(VLA):即在运行时候确定数组的长度静态数组:编译时数组长度就定死了,不能对数组进行增、删、改动态数组:运行时才确定数组的长度,可以对数组进行增、删、改...原创 2019-10-11 15:23:23 · 746 阅读 · 0 评论