自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

USA_AM_1966的博客

技术宅,进步使我快乐!

  • 博客(88)
  • 收藏
  • 关注

原创 C++类引用的好处

传递大型对象的效率高:使用引用作为函数参数传递大型对象时,不需要进行对象的复制,而是直接传递对象的引用,从而提高了代码的执行效率。修改实参:通过引用,可以在函数内部修改实参的值,而不仅仅是修改形参的值。简化代码:引用可以简化代码,使其更加易读和易懂。通过使用引用,可以避免在函数参数中复制大型对象,从而提高代码的效率和性能。作为别名:引用是对象的别名,可以使用引用来操作对象,而不需要直接操作对象本身。总结起来,使用C++引用可以提高代码的效率和性能,简化代码,方便地修改实参和操作对象,使代码更加清晰和易读。

2024-04-12 22:53:39 223

原创 C语言-系统错误信息

目录C语言-系统错误信息strerror函数errno的细节1.调用库函数失败不一定会设置errno2.errno不能作为调用库函数失败的标志3.程序员可以不用errnoC语言-系统错误信息时间到底是什么?也许时间是一条奔流不息大河,我们都是大河里的一朵浪花;也许时间是一面毫无波澜万顷湖,我们都是万顷湖中一滴滴即将被蒸干的湖水。田小龙今年25岁了,不知道为什么,还挺羡慕95年生,身份证却是97年的兄弟--田小虎。当和同事聊起年龄的时候,也许我羡慕他;.

2021-02-22 12:08:03 264

原创 C语言-目录操作1

目录C语言-目录操作获取当前目录切换目录目录的创建与删除获取文件的目录列表C语言-目录操作目录操作在嵌入式产品和应用式软件编程必不可少。获取当前目录Linux下直接输入pwd来获取当前工作目录,这个命令由系统通过shell程序解释执行。模拟实现pwd,获取当前工作目录:函数声明:char *getcwd(char *buf, size_t size);实现思路及原理:getcwd函数把当前目录的名字写到给定的缓冲区buf里.如果目..

2021-02-07 17:40:40 342

原创 C语言-文件操作3

目录C语言-文件操作3文件定位1.ftell函数2.rewind函数3.fseek函数文件缓冲区标准输入、标准输出和标准错误C语言-文件操作3文件定位打开模式‘r’‘w’位置指针指向文件头;打开模式‘a’位置指针指向文件尾。文件位置指针与C语言指针不同,仅仅是一个标志,表示文件读写到的位置。文件位置指针由系统自动设置,对用户隐藏。实际开发中,偶尔需要移动位置指针,我们把移动位置指针称为文件定位。C语言提供了ftell、rewind和fs.

2021-02-04 11:04:53 424 2

原创 C语言-文件操作2

目录C语言-文件操作2文本文件的读取1.向文件中写入数据2.从文件中读取数据二进制文件的读写1.向文件中写入数据2.从文件中读取数据C语言-文件操作2文本文件的读取实际开发中,文本文件以行为单位存放字符串。C语言程序,一般按行写入或读取数据。1.向文件中写入数据C语言向文件写入数据的库函数有fputc、fputs、fprintf,实际开发中一般使用fprintf.函数声明:int fprintf(FILE *fp, const char.

2021-02-03 16:18:55 230

原创 C语言-文件操作1

目录C语言-文件操作文本文件和二进制文件存储格式对比:小区别打开文件与关闭C语言-文件操作概念:文件是数据的集合,数据集的名称就是文件名。分类:从用户角度看,Linux系统文件分为设备文件和普通文件文本文件和二进制文件1.文本文件文本文件也叫作字符文件和ASCII文件,每个ASCII值占一个字节,表示一个字符。2.二进制文件把数据对应的二进制存储到文件中,是字节序列文件。存储格式对比:存储数据123 字符 .

2021-02-02 15:12:41 127

原创 C语言-动态内存管理

目录C语言-动态内存管理相关库函数内存耗尽野指针野指针产生原因:动态内存分配应用经验C语言-动态内存管理动态内存管理,就是程序执行的过程中,由程序编写者动态的申请和回收内存空间。C语言内存的动态分配一般通过库函数实现,主要有malloc和free函数。位置:在堆上。连接:https://blog.csdn.net/USA_AM_1966/article/details/89509589相关库函数1.malloc函数函数声明:void *m.

2021-02-01 15:47:29 150

原创 C语言-main函数

C语言-main函数目录C语言-main函数main函数的参数C语言程序的规范写法main函数的参数main函数有三个参数,argc、argv和envp表示。int argc,用于存放命令行参数的个数。char *argv[],是个字符串数组,每个元素都是一个字符指针,指向一个字符串,即命令行中的每一个参数。char *envp[],也是一个字符串的数组,这个数组的每一个元素是指向一个环境变量的字符指针。envp存放了当前程序运行环境的参数。#include&

2021-01-29 14:39:38 162

原创 C语言-格式化输出

目录C语言-格式化输出1.类型符(type)2.精度3.格式化输出字符串C语言-格式化输出函数:printf、sprintf、snprintf函数声明:int printf(const char *format,...);函数介绍:printf函数参数个数、类型都是可变的。格式说明符介绍([]可选项):%[flags][width][.prec]type%[+右对齐-左对齐][宽度][精度]类型如果输出是整数或者浮点数+右对齐,可以加0填充,例如:pr

2021-01-28 14:06:23 631

原创 C语言-结构体

结构体的概念在C语言中,使用结构体(struct)来存放一组不同类型的数据。形式:struct 结构体名{结构体成员变量1;结构体成员变量2;......结构体成员变量n;} ;结构体是一种程序员自己定义的数据类型,可以包含多个其他类型的数据,可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通过这种指针的应用是为了实现一些更高级的数据结构如链表和树等。结构体变量结构体是一种程序员自定义的数据类型,是模板,可以用它来定义变量。...

2021-01-27 10:23:49 457 5

原创 C语言-类型转换

.自动类型转换一个表达式中出现不同类型间的混合运算,较低的类型会自动向较高的类型转换。一般情况下,数据表示的范围越大,精度越高,级别越高。运算过后,类型保留,高位丢弃,只取(类型字节大小的)低位。自动类型转换顺序:signed char->unsigned char->short->unsigned short->int->unsigned int->long->unsigned ->longfloat(弃用)->double

2021-01-25 15:20:36 272

原创 数字字符转数字相加和求绝对值

数字字符转数字每一位相加求和,附带自主实现整形求绝对值函数。小小思路,不成敬意。程序 = 算法 + 数据结构项目 = 安全有效程序的总和#include<stdio.h>#include<string.h>#include<stdlib.h>int ctoi(const char chr);int main(){ char str[30]; memset(str, 0, sizeof(str)); strcpy(s...

2020-11-20 10:05:19 246

原创 随机生成52个不重复的数字

生成五十二个随机数,存放在数组中,范围是1-52,不允许重复,最后在屏幕上显示出来。小小思路,不成敬意:有项目学习想法的读者可以利用这个思路研究一下,AI斗地主等扑克类的游戏是如何开发的。#include<stdio.h>#include<stdlib.h>#include<string.h>//生成五十二个随机数,存放在数组中,范围是1-52,不允许重复,最后在屏幕上显示出来//存放扑克牌int iarr[52];//判断irand是.

2020-11-20 09:58:13 729

原创 基础知识:liunx下gcc

命令gcc 没有输入文件(说明gcc安装成功) 不能找到这个命令(说明gcc没有安装成功)安装和卸载gccyum -y install gcc 安装gcc(需要联网)yum -y remove gcc 卸载gccgcc -v 查看gcc版本编辑器 Linux下的vim,Windows下记事本,Word等。编译器 将c语言代码编译成可执行代码(如VS)半角 窄 一个字符全角 宽 两个...

2020-09-25 16:59:46 165

原创 linux下centOS_7与window 10下SecureCRT之间的文件传输

windows与服务器之间文件传输linux下centOS_7与window 10下SecureCRT之间的文件传输1.鼠标右键单击连接窗口【192.168.21.125】2.鼠标左键单击【Connect SFTP Session】3.此时Windows与服务器建立了文件传输通道命令pwd 显示服务器工作目录所在位置lpwd 显示本机工作目录所在位置ls 显示服务器工作目录下的文件或者目录lls 显示本机工作目录下的文件或者目录cd 切...

2020-09-24 17:39:52 190

原创 基础使用:vim编辑器

vim最强大的编辑器,没有之一。woxihuannishijijingde,fangfunixiaoshileyiyang。我喜欢你是寂静的,仿佛你消失了一样。nicongyuanchulingtingwo,wodeshengyinjiuwufachujini。你从远处聆听我,我的声音就无法触及你。fangfunideshuangyanyijingfeiliqu,rutongyigewenpengjilenidezui。仿佛你的双眼已经飞离去,如同一个吻封缄了你的嘴。vi空格加文件.

2020-09-24 17:36:31 135

原创 内联函数的基础使用

#include<iostream>using namespace std;inline int max(int, int, int); //内/置联函数 (程序员对编译系统的建议,而非指令)//内联函数使用优点:节省运行时间,提高效率//5个语句以内频繁使用,不含循环,会增加目标程序长度(前身:宏)int main(){ int i = 10, j = 20, k = 30, m; m = max(i, j, k); cout << "m...

2020-09-10 15:32:13 143

原创 结构体访问(day11)

结构体访问结构体变量访问用 .结构体指针变量访问用 ->#include<stdio.h>typedef struct Stu{ char name[20]; //名字 int age; //年龄 char sex[5]; //性别 char id[20]; //学号}Stu; ...

2019-05-08 13:51:22 179

原创 判断大小端和整形提升问题(day10)

判断大小端#include<stdio.h>int check_sys(){ int ret = 1; return *((char*)&ret);}int check_sys1(){ union check_sys { int i; char c; }u; u.i = 1; return u.c;}int main(){...

2019-05-08 13:43:22 117

原创 数组与指针(day9)

int *p[10]指针数组是数组,存放整形类型的指针,可以存放十个int (*p)[10]数组指针是指针,指向一个大小为十的整形数组int arr[10]arr是数组名,表示首元素的地址&arr表示数组的地址arr和&arr +1 跳过的大小不一样arr+1跳过一个首元素的大小&arr+1跳过整个数组大小#include<stdio.h&...

2019-05-08 13:38:42 114

原创 模拟实现strcpy,strcmp,strcat,strstr,strchr,memcpy,memmove(day8)

#include<stdio.h>#include<string.h>#include<assert.h>char *Strcpy(char *dest, const char* src){ char *ret = dest; assert(dest != nullptr); assert(src != nullptr); while ((*d...

2019-04-29 17:13:56 179

原创 模板初阶(day7)

#include<iostream>#include<assert.h>using namespace std;template <class T>T Add(const T& left, const T& right){ return left + right;}//typename是用来定义模板参数的关键字,也可以使用cl...

2019-04-28 10:12:10 150

原创 malloc/free和new/delete的区别与联系(day6)

底层实现:operator new实际是通过malloc来申请空间operator delete最终通过free来释放空间new和delete申请和释放单个元素的空间new[]和delete[]申请和释放连续空间面试题:malloc/free和new/delete的区别共同点:都是从堆上申请空间,都需要手动释放。区别:1.malloc和free是函...

2019-04-25 17:11:08 248

原创 内存管理(day5)

c/c++程序在内存中的区域划分小练习:vs2013 +32位int globalval = 1;static int staticGlobalVar = 1;void Test(){ static int staticVal = 1; int laCalVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "a...

2019-04-25 16:28:36 183

原创 static成员 和 友元(day4)

首先,我想先说说构造函数的几个注意点:1.创建对象时,编译器通过调用构造函数,给对象中的各个成员一个合适的初始值。2.初始化列表:class Date{public: Date(int year, int month, int day) : _year(year) , _month(month) , _day(day) {}private: int _yea...

2019-04-23 14:47:07 122

原创 结构体成员相对于结构体起始位置的偏移量(day3)

指针相减没问题,指针相加没意义#include<iostream>//#pragma pack(1) //设置默认对齐数using namespace std;typedef struct Teacher{ char name; int age; int id;}Teacher;int main(){ //Teacher t1; Teacher *...

2019-04-21 16:46:47 464

原创 类大小的计算(day2)

注意点:1.空类的大小为12.内存对齐(提高效率)结构体内存对齐规则1. 第一个成员在与结构体偏移量为0的地址处。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 注意:对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。(VS中默认的对齐数为8,gcc中的对齐数为4 )3. 结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)...

2019-04-20 22:08:31 340

原创 我的双百计划(day1)

1.重新听一百节课。2.重新写一百篇博客。我能坚持多久呢?每天打卡吧原谅并且接受过去的自己,才是成长。活的时间要长,要健康,要开心。不忘初心,牢记使命,改变自己,成为能者,改变世界。使命感:你有什么?你要什么?你能放弃什么?使命感:大道至简,厚德载物。阿里巴巴:让天下没有难做的生意爱迪生公司:让天下亮起来迪士尼:让全世界快乐起来愿景:十年后会是怎么样...

2019-04-20 20:50:56 289

原创 电话本(通讯录)

#define _CRT_SECURE_NO_WARNINGS#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;string.h&gt;//通讯录,需要在代码中表示若干个人typedef struct PersonInfo{ char name[1024]; char phone[1024];}PersonI...

2018-12-06 11:27:26 2176

原创 自主模拟实现strcpy 和strcat

模拟实现strcpy :char *My_strcpy(char *dest, const char *src){ char *ret = dest; assert(NULL != dest); assert(NULL != src); while((*dest++ = *src++) != '\0') { ; } return ret;}模拟实现strcat:...

2018-11-29 12:47:41 189

原创 实现打印一个整数的每一位

递归方式实现打印一个整数的每一位 :void Print_num(int n){ if(n&gt;9) { Print_num(n/10); } printf("%d ", n%10);}非递归方式实现打印一个正数的每一位:(逆序打印) void Print_num0(int n){ while(n != 0) { printf("%d ",n%10)...

2018-11-29 11:39:42 245

原创 n的阶乘

一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且定义0的阶乘为1。递归实现:int Fac(int n){ if(0 == n) { return 1; } if(1 == n) { return 1; } else { return n*Fac(n-1); }}非递归实现:int Fac0(int n){...

2018-11-29 10:20:52 220

原创 编写一个函数reverse_string(char * string)(递归实现)

编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中 的字符串操作函数。 非递归实现:char *Reverse_string(char *str){ assert(NULL != str); char *str1 = str; char *left = str; while(*...

2018-11-29 09:03:28 198

原创 写一个递归函数DigitSum(n)

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 。递归实现:int Num_add(int n){ if(0 == n) { return 0; } return n%10+Num_add(n/10);}非递归实现:int Num_add0(int n)...

2018-11-28 14:45:27 239

原创 C语言实现N^k

编写一个函数实现n^k,使用递归实现 :int My_pow(int x, int n){ assert(n &gt;= 0); if(0 == n) { return 1; } else if(1 == n) { return x; } else { return x * My_pow(x, n - 1); }}编写一个函数实现n^k,非递归实现:...

2018-11-28 13:14:18 605

原创 斐波拉切数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)。...

2018-11-26 17:00:26 1090

原创 实现一个函数,判断一个数是不是素数。

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。大于1的自然数若不是素数,则称之为合数。实现一个函数,判断一个数是不是素数。#define _CRT_SECURE_NO_WARNINGS#include&lt;stdio.h&gt;#include&lt;windows.h&g...

2018-11-19 14:45:55 705

原创 使用函数操作数组

创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。 #include&lt;stdio.h&gt;#include&lt;windows.h&gt;#include&lt;assert.h&gt;//初始化数组void init(int *arr, int n)...

2018-11-19 14:14:55 311

原创 打印乘法口诀表

输入一个数 n打印,n*n乘法口诀表:#include&lt;stdio.h&gt;#include&lt;windows.h&gt;void pritf_mul_table(int n){ int i = 0; int j = 0; for(i = 1; i&lt;=n; i++) { for(j = 1; j&lt;=i; j++) { printf("%d*...

2018-11-18 12:25:01 202

原创 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。 第一种方法:(非递归)#include&lt;stdio.h&gt;int main(){ int total = 0; //瓶子数 int kps = 0; //钱数 int ys = 0; printf("请输入钱数:"); scan...

2018-11-08 11:31:54 179

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除