
C/C++
文章平均质量分 61
一条余弦Cos
知道的越多,不知道的也就越多。
展开
-
【C/C++】不调用库函数实现strcpy函数
char * strcpy(char * strDest,const char * strSrc){ if ((NULL==strDest) || (NULL==strSrc)) // [1] char * strDestCopy = strDest; // [2] while ((*strDest++ = *strSrc++)!='\0'); //[3] return strDestCopy;}[1] 如果不检查指针 strDest 和 strSrc 的有效性,说明原创 2021-08-12 17:17:04 · 863 阅读 · 0 评论 -
【C/C++】#define SQUARE(a)((a)*(a))的问题
【C/C++】#define SQUARE(a)((a)*(a))的问题 编译环境:Visual Studio 2013#include<stdio.h> #define SQUARE(a) ((a)*(a))int main(){ int a = 7; int b; b原创 2021-07-28 15:10:48 · 2185 阅读 · 0 评论 -
【C/C++】函数调用时的参数传递和栈帧结构
【C/C++】函数调用时的参数传递和栈帧结构 有如下 一段程序:int i = 0x22222222; char szTest[] = ”aaaa”; //a的ascii码为0x61 func(i, szTest); //函数原型为void func(int a,char *sz); 请问刚进入func函数时,参数在栈中的形式可能为 (左侧为地址,右侧为数据) ( D ) A0x0013FCF0 0x61616161 0x0013FCF4 0x222222原创 2021-07-28 15:06:10 · 567 阅读 · 0 评论 -
【C基础】-1 在计算机中是如何存储的
【C基础】-1 在计算机中是如何存储的 我们先来看一段简单的代码:#include <iostream>using namespace std;int main(){ int a = -1; cout << &a << endl; unigned int b = 4294967295; //4 byte 最大整数 cout << &b << endl; return 0;}[外链图原创 2021-07-08 22:48:36 · 1858 阅读 · 0 评论 -
【C++】万能头文件 <bits/stdc++.h> 的用法和优缺点
【C++】万能头文件 bits/stdc++.h 的用法和优缺点文章目录【C++】万能头文件 bits/stdc++.h 的用法和优缺点一、使用方法二、头文件的内容三、VS 中如何使用四、优点与缺点 最近在参考别人的代码时,发现了这么一个头文件,在C++中引用很广泛。然后查了以下,总结一下。#include <bits/stdc++.h> 它是C++中支持的一个几乎万能的头文件,几乎包含所有的可用到的C++库函数。以后写代码就可以直接引用这一个头文件了,不需要在写一大堆vecto原创 2021-06-24 16:28:20 · 191693 阅读 · 41 评论 -
【C/C++】输出格式%d、%6d、%06d、%-6d、%.6f的区分
【C/C++】在C/C++中,输出格式%d、%6d、%06d、%-6d、%.6f的区分文章目录【C/C++】在C/C++中,输出格式%d、%6d、%06d、%-6d、%.6f的区分1、%d 普通的整数输出2、%6d 整数输出,宽度是6位,不足左边补空格3、%06d 整数输出,宽度是6位,不足左边补数字04、%-6d 整数输出,宽度是6位,不足右边补空格5、%.6f 输出小数,即保留小数点后6位1、%d 普通的整数输出 代码验证:#include<stdio.h>int main()原创 2021-06-02 11:45:31 · 39369 阅读 · 2 评论 -
【C/C++】析构函数中delete this 指针为什么会导致死循环
【C/C++】析构函数中delete this 指针为什么会导致死循环 在析构函数中delete this指针,会产生什么样的结果呢?先看看下面这段代码。#include <iostream>using namespace std; class A{public: A() { cout<<"A()"<<endl; } ~A() { cout<<"~A()"<<endl; delete this; }};原创 2021-05-28 18:11:05 · 930 阅读 · 0 评论 -
【C/C++】const修饰指针和常量(三种用法)
【C/C++】常量指针和指针常量——const修饰指针变量时文章目录【C/C++】常量指针和指针常量——const修饰指针变量时一、概念1.1 指针1.2 const二、const修饰指针和常量2.1 const修饰指针2.2 const修饰常量2.3 const既修饰指针又修饰常量三、总结一、概念1.1 指针 指针是一个变量,该变量指向一个内存地址,即该指针的地址,访问这个地址(*p),即可得到指针指向的内容 (在C/C++里,变量名前面除修饰符外,都是变量类型)。1.2 const c原创 2021-04-29 19:38:28 · 2017 阅读 · 1 评论 -
【C/C++】分析数组越界访问导致死循环
阅读下面代码,并分析导致其结果的原因(以下分析基于VS环境的调试)#include <stdio.h>#include<stdlib.h>int main(){ int i = 0; int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //拥有10个元素的整型数组 for (i = 0; i <= 12; i+...原创 2020-04-17 18:58:36 · 939 阅读 · 0 评论 -
【C/C++】STL中count函数和count_if函数
【C/C++】STL中count函数和count_if函数文章目录【C/C++】STL中count函数和count_if函数一、count函数二、count_if 函数三、总结 count和count_if函数是计数函数,那他们有什么区别呢?一、count函数 count函数的功能:统计容器中等于value元素的个数。 count函数的参数:count(first,last,value); //first是容器的首迭代器,last是容器的末迭代器,value是询问的元素。给出n个原创 2021-04-06 21:53:36 · 1671 阅读 · 0 评论 -
【C基础】深度剖析 指针数组、数组指针、函数指针、指针函数
【C基础】深度剖析 指针、数组、函数文章目录【C基础】深度剖析 指针、数组、函数一、一、原创 2021-03-26 12:51:00 · 354 阅读 · 0 评论 -
【C基础】当指针作为函数的形参,实参可能是____?
【C基础】当指针作为函数的形参,实参可能是____?当函数的形参为一级指针时,实参可以是:变量的地址、一级指针变量。当函数的形参为二级指针时,实参可以是:一级指针的地址,二级指针变量、指针数组int* parr[10]。总结: ① 值传递:形参是实参的一份临时拷贝,形参与实参无任何关联,在函数中对形参进行修改不影响外部的实参。 ② 址传递:形参实际就指向实参,在函数中对形参指向的空间中的内容修改,实际就是修改实参本身。 ③二级指针传递:要对指针进行操作或者修改,传参时,实参应是该指针原创 2021-03-25 21:51:50 · 2457 阅读 · 0 评论 -
【C/C++】基本数据类型的字节大小和数值范围
【C/C++】基本数据类型的字节大小和数值范围文章目录【C/C++】基本数据类型的字节大小和数值范围一、int型字长问题二、关于不同系统中基本数据类型所占空间大小问题三、常见基本数据类型的字节大小四、常见基本数据类型的数值范围4.1 无符号整型4.2 有符号整型4.3 浮点类型4.4 无符号整型的极限值符号4.5 有符号整型的极限值符号4.6 浮点类型的极限值符号一、int型字长问题 ① C/C++规定int字长和机器字长相同; ② 操作系统字长和机器字长未必一致; ③ 编译器根据操作系原创 2021-03-25 12:44:43 · 1656 阅读 · 0 评论 -
【C/C++】typdef与#define的用法与区别
【C/C++】typdef与#define的用法与区别文章目录【C/C++】typdef与#define的用法与区别1、总结:#define与typedef的差异1.1 两者执行时间的差异1.2 两者作用的差异1.3 写法上的差异2、typedef的用法3、#define的用法3、typedef与#define的区别1、总结:#define与typedef的差异1.1 两者执行时间的差异#define是宏定义,发生在预处理阶段,即编译之前.它只进行简单而机械的替换,而不进行任何检查.typed原创 2021-03-15 12:51:30 · 677 阅读 · 1 评论 -
【C/C++】C++中字符串的输入、循环输入、find查找
【C/C++】C++中字符串的输入与循环输入文章目录【C/C++】C++中字符串的输入与循环输入1、 字符串的输入1.1 cin>>1.2 cin.get()1.3 cin.getline()1.4 getline()1.5 gets()1.6 getchar()2、 循环输入输出2.1 cin>>循环输入2.2 scanf()循环输入2.3 getline()循环输入3、find()的使用1、 字符串的输入cin、 cin.get() 、cin.getline()、ge原创 2021-03-11 13:00:55 · 5345 阅读 · 1 评论 -
【C/C++】常见的几种字符串的输入与输出
常见的几种字符串的输入与输出文章目录常见的几种字符串的输入与输出1、字符串数组+初始化2、字符串指针+初始化3、数组+scanf()4、指针+scanf5、指针+数组+scanf6、注意:如下方法控制台运行会终止(野指针)7、用scanf和gets( 字符数组名或指针)进行输入的区别:8、循环输入多组测试数据1、字符串数组+初始化char s1[]="array"; //字符数组char s2[6]="array"; //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘printf("原创 2020-11-24 17:27:39 · 985 阅读 · 0 评论 -
【C/C++】关于循环/多次输入字符或字符串时, 清除缓冲区的问题
关于循环输入字符或字符串文章目录关于循环输入字符或字符串一、前言1、什么是缓冲区呢?2、使用缓冲区有什么好处呢?3、为什么要清除缓存区呢?二、C清除缓存区1、使用fflush(stdin)语句2、使用getchar()语句:三、C++清除缓存区1、使用cin.ignore(numeric_limits :: max() , '\n')语句2、使用 cin.sync()语句3、使用cin>>ws语句一、前言 首先,需要说明的是,循环输入字符(串)时,空白符抢占字符(串)位置的问题 到底是原创 2020-11-24 16:59:53 · 2872 阅读 · 0 评论 -
【C/C++】C语言和C++的区别都有哪些?
【问题一】C语言和C++中函数有什么区别? 1、参数列表不同在C语言中,如果一个函数没有参数,可传递任意多个参数(对函数参数检测不严格)在C语言中,如果函数没有参数时,必须明确指定函数的参数类型是voidvoid testfunc(void);在C++中,如果一个函数void testfunc();表明该函数没有参数,在调用时传参编译会报错(对函数参数检测严格) 2、返回值要区别在C语言中,如果函数没有显式给出函数返回值类型 testfunc() {} ,那么编译器会为.原创 2020-10-18 22:23:07 · 394 阅读 · 0 评论 -
【C基础】操作符优先级顺序
文章目录一、代码举例二、总结:三、操作符优先级一、代码举例 先看一段简单的代码#include<stdio.h> int main(void){ int a=0,b=1,c=2; a=b,c; printf("a=%d\n",a); a=0; a=(b,c); printf("a=%d\n",a); return 0;} 打印的结果是分析:二、总结:复杂表达式的求值有三个影响的因素。操作符的优先级操作符的结合性是否控制求值顺序。两个原创 2020-10-17 15:46:09 · 1478 阅读 · 0 评论 -
【C/C++】宏函数与内联函数的区别
知识点:宏函数与内联函数文章目录知识点:宏函数与内联函数一、概念二、特性三、优缺点四、笔试题五、总结一、概念 以inline修饰的函数就叫做内联函数,C++编译器在编译时会在调用内联函数时地方展开,没有函数压栈的开销,内联函数提升程序的运行效率。 内联函数在调用时不是像一般函数那样要转去执行被调用函数的函数体,执行完成后在转回调用函数中,执行其后的语句;而是在调用处 用内联函数体 的代码来替换,以这样的方式结婚时呢个调用开销,提高运行效率。#include<iostream>u原创 2020-10-16 17:38:50 · 2093 阅读 · 0 评论 -
【C基础】隐式类型转换和整形提升
在C语言中尤其要注意隐式类型转换、整形提升与算数转换文章目录1、表达式求值2、隐式类型转换2.1 整型提升的意义2.2 实例2.3 如何整形提升2.4 算数转换1、表达式求值 决定表达式求值的顺序:操作符的优先级和结合性 但是在表达式的操作数在求值的过程中可能需要转换为其他类型,因此提出隐式类型转换的概念。2、隐式类型转换 C的整型算术运算总是至少以缺省整型类型的精度来进行的。 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。2.1 整原创 2020-10-06 21:54:17 · 454 阅读 · 0 评论 -
【C/C++】struct与class的区别?面向对象的三大特征?
目录C++中struct与class的区别?C++是基于面向对象的语言,那么面向对象的三大特征是什么?1. C++中struct与class的区别?答:C++被称为“C with class”,所以说C++中class是非常重要,与class类似的一个结构就是struct。C++中struct可以当结构体去使用,还可以用来定义类,和class定义类是一样的。区别在于下面几点:默认的继承权限 struct默认是公有继承(public),class默认是私有继承(private).原创 2020-07-30 11:48:30 · 325 阅读 · 0 评论 -
【C/C++】结构体的大小 VS 类的大小 ( 详解 “内存对齐规则“ )
内存对齐文章目录内存对齐1、什么是内存对齐?为什么要内存对齐?2、内存对齐的规则是什么?3、如何修改默认对齐数?如何计算结构体的大小?4、什么是位段?什么是联合体?如何计算它们的大小?5、C++中既有类的属性(成员变量)也有类的方法(成员函数),那么类的大小又是如何计算的?对于一些特殊的类,比如:仅有成员函数的类、空类的大小又是如何计算的?1、什么是内存对齐?为什么要内存对齐?首先先看一下面两段代码:typedef struct S1 //环境:VS{ char a1; in原创 2020-07-31 21:50:45 · 697 阅读 · 0 评论 -
【C基础】大/小端字节序存储问题,如何检测机器是大端还是小端?
计算机中数据存储的整数与浮点数的区别:整数在计算机以补码的形式存储的浮点数在计算机中 SME1、整数整数又有正整数和负整数原码反码补码原创 2020-07-31 20:48:44 · 208 阅读 · 0 评论 -
【C基础】strlen与sizeof的区别(汇总)
关于 strlen 与 sizeof 的区别,我相信很多人都有所了解。以下我总结了几点关于strlen 与 sizeof 的区别和注意事项。1. strlen 是函数,sizeof 是运算符。2. strlen 测量的是字符的实际长度,以'\0' 结束。而sizeof 测量的是字符的分配大小。比如:char str[20] = "hello"; printf("strlen: %d\n",...原创 2019-12-07 10:14:58 · 217 阅读 · 0 评论 -
【C基础】初学C语言基础必备知识
1、若输入的字符串是中间带有空格的,建议使用gets()和puts()来获取和打印字符串,因为sanf("%s",a)它是以空格作为结束符的,一旦遇到空格则停止键盘获取。2、i. 字符串计算长度用char str;int leng;leng=strlen(str);注意:加头文件#include<string.h>`ii. 数组计算长度用 int arr...原创 2019-12-07 09:36:19 · 335 阅读 · 0 评论