C
胡思先生
这个作者很懒,什么都没留下…
展开
-
计算100-200之间素数的方法
素数,就是除了1和本身以外没有除后余为零的数,如 1, 3,5等 int i = 0; int j = 0; for(i=100; i<=200; i++) { int count = 0; for(j=2; j<i; j++) { if(i%j == 0) count++;//只要出现一次count++,说明除1和自身外还有可以将i整除的数。 }...原创 2018-12-06 19:30:06 · 918 阅读 · 0 评论 -
this指针的特性
思维导图特性原创 2019-05-20 15:50:38 · 299 阅读 · 0 评论 -
strcpy和strncy的缺陷
思维导图1.存在潜在越界问题当dest的长度 < src的长度的时候,由于无法根据指针判定其所指指针的长度,故数组内存边界不可知的。因此会导致内存越界,尤其是当数组是分配在栈空间的,其越界会进入你的程序代码区,将使你的程序出现非常隐晦的异常。2.字符串结束标志服’\0’丢失当dest所指对象的数组长度==count的时候,调用strncpy使得dest字符结束符’\0’丢失。3....原创 2019-05-11 15:52:23 · 2669 阅读 · 0 评论 -
格式化输出--%m.n
思维导图输出标准:1.%:表示格式说明的起始符号,不能省略2.-:有-b表示左对其输出,右边补空格,如省略表示右对齐,左边补空格3.0:有0表示指定空格填0,如省略指定空格不填。4.m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度,用于说明输出的实形数小数点位。未指定n,浮点型默认精度为n = 6位格式字符格式符用以指定输出项的数据类型和输出格式、1.d格...原创 2019-05-21 16:16:43 · 4073 阅读 · 0 评论 -
memcpy和strcpy的区别
思维导图1.memcpy用法2.strycpy用法3.区别1.复制方法不同:strycpy不用指定复制长度,他遇到被复制字符串’\0’结束,容易溢出。memcpy是由第三个参数决定复制长度的2.复制内容不同“strcpy只能复制字符串,而memcpy能复制任意内容3.用途不同:一般用strcpy复制字符串,用memcpy复制其他类型...原创 2019-05-12 15:13:28 · 1257 阅读 · 0 评论 -
inline函数的总结
思维导图1.使用方法-1. 在函数返回类型前加Inline。成员函数可以在声明时候添加Inline也可以在定义时候添加inline。2.将成员函数定义在类定义式内,这个成员函数就被隐喻为Inline。内联说明对于编译器仅仅是一个建议,编译器可以忽略这个建议下面没有加lnline的时候,机器进行编译操作一般的函数调用,进行压栈操作,导致系统开销加大,花费了更多时间。下面是加了i...原创 2019-05-22 16:40:39 · 348 阅读 · 0 评论 -
C++的类型转换
C的类型转换int main(){ int i = 1; double d = i; printf("%d, %.2f\n", i, d); //隐式类型转换 隐式转换:相关类型,相近类型 int* p = &i; //显示类型转换 显示转换:无关类型 int address = (int) p; system("pause"); return 0;}运...原创 2019-06-25 09:58:16 · 257 阅读 · 0 评论 -
C++11各种特性
1.C++的初始化:1.1C++98中初始化问题在C++98中,能用大括号对数组元素初始化,如下: int a[] = {1,2,3,4}但是不能对自定义类型却不能用大括号初始化,如下 vector<int> v{1,2,3,4};上面的初始化在C++98中是不允许的,但是在C++11中扩大了大括号括起的列表的作用范围,使其可以用于所有的内置类型和自定义类型,在使用初...原创 2019-06-26 18:40:50 · 539 阅读 · 0 评论 -
正确定义二维数组
对二维数组进行正确初始化二维数组必须指定列的数量,行的数量可以不定义即可以省略第一维的定义,但不能省略第二维的定义1.分行进行初始化int a[2][3] = {{1,2,3},{4,5,6}};在{}内部再用{}把各行分分开,第0行的初值是1,2,3。第1行的初值是4,5,6。相当于执行:int a[2][3];a[0][0] = 1; a[0][1] = 2; a[0][2] =...转载 2019-06-24 16:23:17 · 36653 阅读 · 5 评论 -
【C语言】整形提升和整形截断
整形提升:K&R(C语言第一本编程书的编著者)在C中将整形提升定义为:“A character, a short integer, or an integer bit-field, all either signed or not, or an object of enumeration type, may be used in an expression wherever an in...原创 2019-09-06 12:41:53 · 355 阅读 · 0 评论 -
指针和引用的区别
参考文章思维导图1.为什么使用指针1.1每一个编程语言都使用指针C++将指针暴露给了 用户(程序员),而java和C#等语言则将指针隐蔽起来了。1.2使用指针的有点和必要性:指针能够有效的表示数据结构能动态分配内存,实现内存的自由管理能方便的使用字符串指针直接与数据的存储地址有关。比如:值传递不如地址传递高效,因为值传递先从实参的地址中取值,再赋值给形参代入函数计算。而指针...原创 2019-05-15 13:20:05 · 38334 阅读 · 7 评论 -
什么是函数指针?(理解及使用)
思维导图1. 定义: char* fun1(char* p1, char* p2)// 1 char** fun2(char* p1, char* p2);// 2 char*(*fun3)(char* p1, char* p2);// 31,2,3分别是什么意思呢?很简单,char*是返回类型,fun1是函数名,括号内是参数和1相似,char** 是返回类型...原创 2019-05-09 18:36:17 · 22818 阅读 · 2 评论 -
C++关键字statci的使用
一.static的作用有三种:限制变量或函数作用域,保持变量内容的持久,默认初始化为01.被static关键字修饰的全局函数或者变量具有文件作用域,即只可以在当前文件中可见。2.被static修饰的变量会存储在静态存储区,生命周期也为从定义直至程序结束。对于局部变量, 即使在函数退出后该静态变量依然存在,然而却无法访问,此外,static修饰的变量一生只能初始化一次(常考)3.静态存储区的...原创 2019-04-30 14:10:04 · 455 阅读 · 0 评论 -
宏的理解:简单的宏如何实现
这是我第一次写的宏问题:写一个简单的add,用宏的形式写出#define add(int a, int b) return a+b;int main(){ int c = Add(1, 2); printf("%d", c); system("pause"); return 0;}由于对宏理解的错误,我把宏写成了函数。第一个错误:宏不需要传类型,因为在预处理阶段,已经将1和...原创 2019-01-14 14:41:25 · 770 阅读 · 0 评论 -
宏的理解:怎么写多行的宏
多行的宏只有一行的add宏很好写,只需要注意优先级就可以解决,但是多行的宏呢?让我们写一个简单的swap函数#define swap(x,y)\ //写宏时不用分号x = x + y;\y = x - y;\x = x - y; //代码结束时,不需要加\nt main(){ int x = 1; int y = 3; Swap(x, y); printf("x = %...原创 2019-01-14 15:16:53 · 550 阅读 · 0 评论 -
逻辑运算符 && | | 和 位运算符 & |的总结
逻辑运算符 &amp;&amp; 和 ||&amp;&amp;和||为逻辑运算符,返回的条件为真或假,而不是数值。a &amp;&amp; b, a为真,b为真,返回值为真,如果有一个为假,返回值为假。a || b,其中一个为真,就返回真,否则为假。口诀:&amp;&amp;:有0则为0。||: 有1则为1。在实际中的应用:&amp原创 2019-01-14 16:16:27 · 1207 阅读 · 0 评论 -
判断编译器是大端还是小端
什么是大小端?有些编译器从低位字节开始存放,称为“小端”,有的从高位字节开始存放,称为“大端”。大端:高字节放在低地址,和我们从左往右阅读的顺序一致。小端:低字节放在低地址。int main(){ int a = 1; //[01 00 00 00]小端存储 //[00 00 00 01]大端存储 return 0;}如何判断大小端?1.通过字节大小判断因为int为4个...原创 2019-04-27 22:31:55 · 1005 阅读 · 2 评论 -
new和malloc的区别及malloc详解
1.new和malloc的区别共同点:两者开的空间都存放在堆上,并且都需要手动释放不同点:在含义上:1.malloc是一个函数,new是一个操作符。初始化方面:2.malloc申请的空间不会初始化,new可以初始化空间。开辟空间方面:3.malloc需要手动计算空间大小并传递,而new只需要声明空间是什么类型就好。返回类型方面:4.malloc返回的类型是void*,必要的时...原创 2019-05-03 13:47:01 · 1051 阅读 · 0 评论 -
atoi()函数和itoa()函数的用法及其实现(字符串与整形的相互转化)
atoi()及itoa()的用法一.itoa()的用法1.原型:char itoa(int value, char string, int radix)2.头文件:include<stdlib.h>3.功能:将整数value转换成字符串存入string,radix为转换所用基数(分别为 2进制, 8进制, 10进制, 16进制)4.返回值:转换后的字符串的指针举例:voi...原创 2019-04-28 15:56:58 · 584 阅读 · 0 评论 -
const关键字总结
一.关于const关键字的思维导图二:const的使用方法1.定义const对象const修饰符把对象修饰为常量,意思是接下来对象都被当成常量使用,不能被修改在用const修饰的值不能更改一开始就要初始化类中的const对象需要通过构造函数初始化定义2.const对象默认为文件局部变量在全局作用域声明的const变量是文件的局部变量,只能被当前文件使用,不能被其他文件访问。如果...原创 2019-05-03 16:22:31 · 366 阅读 · 0 评论 -
结构体对齐规则及位域规则
让我们看看下面两个代码:struct S1{ char c1;//1 int i;//4 char c2;//1};struct S2{ char c1;//1 char c2;//1 int i;//4};int main(){ struct S1 s1 = { 0 }; printf("%d\n", sizeof(struct S1)); printf("...原创 2019-04-28 22:53:43 · 1922 阅读 · 0 评论 -
【C语言】浮点型存储
引言:让我们看看下面一段代码: #include<stdio.h>#include<stdlib.h>int main(){//A部分 int n = 9; float* f = (float*)&n; printf("n = %d\n", n); printf("f = %f\n", *f);//B部分 *f = 9.0; printf(...原创 2019-09-08 14:01:41 · 396 阅读 · 0 评论