![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
洋芋辰丶
好奇 积累 成长
展开
-
Linux命令chmod后为什么有时候是四位数字参数(如0755)?【秒懂】
和一般情况的chmod用法不同,有时我们会发现参数竟然有四位数字!原创 2022-09-27 14:41:14 · 2913 阅读 · 1 评论 -
Linux内核修改配置与整体MakeFile检查not clean冲突解决方法(图文)
Linux内核修改配置与整体MakeFile检查not clean冲突解决方法背景最近因为项目需求,需要更改Android平台下Linux底层内核相关配置,但是更改后整体Make后会报错,报错信息为:通过去MakeFile文件中错误信息判断的对应行查看报错逻辑:可得知是因为在内核目录下已经存在.config文件,或者在内核目录下存在/include/config路径,如果符合,就会报is not clean错误信息。但是之前我是通过make menuconfig方法去配置内核,配置完后必定会在原创 2021-11-25 10:23:30 · 2303 阅读 · 0 评论 -
简单this指针
this指针作用:因为对象模型中共享代码,所以要识别在方法中访问哪个对象的成员,编译器会在每个方法中加入一个形参该对象的指针(this)对象大小:用同一个类实例的对象,他们各自拥有成员变量的空间,共享代码(函数、方法)空间。编译时,遇到共享的函数方法空间,会重定义函数printA(Test *this)class Test{public:int a;int b;void printA(){cout << a << endl; //cout << t原创 2021-02-01 14:43:23 · 58 阅读 · 0 评论 -
c语言实现栈及栈的基本操作
C语言实现栈的操作(初始化、入栈、出栈、取栈顶)(数组)#include <stdio.h>#define SIZE 10struct stack{int stack[SIZE];int stack_size;};//栈顶元素int top(struct stack * s){return s->stack[SIZE - 1];}//入栈void push(struct stack* s,int num){if(s->stack_size == 0)原创 2021-02-01 14:42:53 · 1286 阅读 · 0 评论 -
C++四种类型转换
C++依然存在隐式类型转换int num = 5;double b = num;不安全,无类型检查强制类型转换运算符(不是一个函数):static_castdouble b =static_cast(num);、转换成double类型char ch = static_cast(num);void与任意类型指针之间的转换int p_num = #void* ptr = static_cast<void*>(p_num);int* p2 = static_cast<int原创 2021-02-01 14:42:23 · 143 阅读 · 0 评论 -
string类、迭代器、vector类
string类可变长1、用多少不够用现增加 malloc2、先预留再释放不需要的部分 reverse() shrink_to_fit()操作字符串目标:实现MyString任务:学会使用string类成员函数(初始化、插入、比较、查找、删除、遍历、替换)头文件 #include string s = “hello world”;初始化string s = “hello world”;string si( “hello world”);string s1(s2);string s原创 2021-02-01 14:41:53 · 176 阅读 · 0 评论 -
一些c++基础相关笔记
constC:将变量修饰为只读变量const int a = 1;int *p = &a;*p = 2;cout << a << endl;输出结果2const修饰变量虽然不能直接用变量名修改,但是可以通过指针等方法修改地址来操作。传递函数形参(保护函数实参不在函数执行过程中被修改)函数接口的安全性传值(只使用不修改实参)传地址(既使用也修改实参)C++:const修饰的变量就是常量指针或者引用类型,一定是const对constconst int原创 2021-01-29 02:04:22 · 74 阅读 · 0 评论 -
C++类与对象
C++结构体升级struct(结构体)—class(类)结构体:变量加函数类:成员加方法C++中使用结构体时可以直接使用结构体名,不用再加structC++中结构体中成员可以时是函数class Student{public:int num;//成员变量、属性char * name;int age;void display()//方法{cout << "num = " << num;cout << "name = " << name原创 2021-01-29 02:03:44 · 129 阅读 · 0 评论 -
2021-01-29
#include 头文件 io流(输入输出,文件读写)c 到 c++升级1:命名空间:作用:防止命名冲突(多人协同开发出现命名冲突:全局变量,函数命名冲突)using namespace std;命名空间定义:namespace 名字{}(在主函数之前)命名空间可以嵌套定义A::B::Cnamespace A{int count = 5;}namespace B{int count = 6;}int main{return 0;}命名空间的使用:方式一:名字::(原创 2021-01-29 02:03:14 · 97 阅读 · 0 评论 -
常见指针变量的定义
常见指针变量的定义定 义 含 义int *p; p 可以指向 int 类型的数据,也可以指向类似 int arr[n] 的数组。int **p; p 为二级指针,指向 int * 类型的数据。int *p[n]; p 为指针数组。[ ] 的优先级高于 *,所以应该理解为 int *(p[n]);int (*p)[n]; p 为二维数组指针。int *p(); p 是一个函数,它的返回值类型为 int *。int原创 2021-01-28 00:36:54 · 308 阅读 · 0 评论 -
指向数组的指针
数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存定义数组时,要给出数组名和数组长度,数组名可以认为是一个指针,它指向数组的第 0 个元素。在C语言中,我们将第 0 个元素的地址称为数组的首地址。以上面的数组为例,下图是 arr 的指向:#include <stdio.h>int main(){int arr[] = { 99, 15, 100, 888, 252 };int len = sizeof(arr) / sizeof(int); //求数组长度int i;原创 2021-01-28 00:36:23 · 218 阅读 · 0 评论 -
数组倒序输出
数组倒序输出#include <stdio.h>#include <stdlib.h>#define I (sizeof(arr)/sizeof(arr[0]))void show(int arr[], int len){int i = 0;for(;i<len;i++){printf("%d", arr[i]);}printf("\n");}void Reverse(int arr[], int len){int temp;int i = 0;fo原创 2021-01-28 00:35:51 · 439 阅读 · 0 评论 -
#if、##ifdef、#ifndef
预处理指令是以#号开头的代码行,# 号必须是该行除了任何空白字符外的第一个字符。指令 说明空指令,无任何效果#include 包含一个源代码文件#define 定义宏#undef 取消已定义的宏#if 如果给定条件为真,则编译下面代码#ifdef 如果宏已经定义,则编译下面代码#ifndef 如果宏没有定义,则编译下面代码#elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码#endif 结束一个#if……#else条件编原创 2021-01-26 15:10:09 · 708 阅读 · 0 评论 -
C语言带参数的宏定义
C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。带参宏定义的一般形式为:#define 宏名(形参列表) 字符串例如:#define M(y) yy+3y //宏定义// TODO:k=M(5); //宏调用在宏展开时,用实参 5 去代替形参 y,经预处理程序展开后的语句为k=55+35。输出两个数中较大的数#include <stdio.h>原创 2021-01-26 15:09:36 · 1577 阅读 · 2 评论 -
#define 宏定义
#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。#include <stdio.h>#define N 100int main(){int sum = 20 + N;printf("%d\n", sum);return 0;}输出结果:120#define N 100就是宏定义,N为宏名,100是宏的内容(宏所表示的字符串)。在预处理阶段,对程序中所有出现原创 2021-01-26 15:08:50 · 2782 阅读 · 0 评论 -
定义一个函数gcd,功能为求a与b的最大公约数
#include <stdio.h>//函数声明int gcd(int a, int b); //也可以写作 int gcd(int, int);int main(){printf(“The greatest common divisor is %d\n”, gcd(100, 60));return 0;}//函数定义int gcd(int a, int b){//若a<b,那么交换两变量的值if(a < b){int temp1 = a; //块级变量a原创 2021-01-26 15:07:48 · 1264 阅读 · 0 评论 -
局部变量和全局变量
形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。所谓作用域(Scope),就是变量的有效范围。局部变量定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。例如:int f1(int a){int b,c; //a,b,c仅在函数f1()内有效return a+b+c;}int main(){int m,n; //m,n仅原创 2020-11-09 20:56:13 · 270 阅读 · 0 评论 -
return相关
没有返回值的函数为空类型,用void表示。例如:void func(){printf(“http://c.biancheng.net\n”);}一旦函数的返回值类型被定义为 void,就不能再接收它的值了。例如,下面的语句是错误的:int a = func();为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为 void 类型。return 语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return 语句被执行,所以只有一个返回值(少数的编程语言支持原创 2020-11-09 20:55:20 · 177 阅读 · 0 评论 -
简单数组相关
数组int a[4];我们把这样的一组数据的集合称为数组(Array),它所包含的每一个数据叫做数组元素(Element),所包含的数据的个数称为数组长度(Length),例如int a[4];就定义了一个长度为4的整型数组,名字是a。数组中的每个元素都有一个序号,这个序号从0开始,而不是从我们熟悉的1开始,称为下标(Index)将1~10存放在数组中:#include <stdio.h>int main(){int nums[10];int i;//将1~10放入数组中fo原创 2020-11-09 20:54:50 · 58 阅读 · 0 评论 -
结构体
结构体结构体写在int main()前struct 结构体名 {成员表列};写复数:实部r 虚部vstruct Plural {int r;int v;};也可以简洁为:typedef struct {int r;int v;} Plural;不能将一个结构体变量作为一个整体进行输入和输出。例如: 已定义student1和student2为结构体变量并且它们已有值。printf(″%d,%s,%c,%d,%f,%\n″,student1); 错误(2) 可以引原创 2020-11-09 20:54:11 · 244 阅读 · 0 评论 -
2020年十一月二日写的简单九九乘法表
#include <stdio.h>int main(){int i = 1;int j = 1;while(1){printf(" %d*%d=%-2d “, i, j, i*j);if(i == j){printf(”\n");j++;i = 1;}else{i++;}if(j == 10){break;}}return 0;}#include <stdio.h>int main(){int i, j;for(i=1; i<=原创 2020-11-09 20:53:30 · 97 阅读 · 0 评论 -
break和continue用法
当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。在多层循环中,一个 break 语句只向外跳一层。输出一个44的整数矩阵#include <stdio.h>int main(){int i=1, j;while(1){ // 外层循环j=1;while(1){ // 内层循环printf("%-4d", ij);j++;if(j>4) break;原创 2020-11-09 20:52:03 · 174 阅读 · 0 评论 -
循环与选择结构 for
forwhile循环较为松散,可以用更紧凑的for循环。for(表达式1;表达式2;表达式3){语句块}先执行表达式1,再执行表达式2,若为真则执行循环体,否则结束循环,执行完循环体后执行表达式3,重复23,直到表达式2为假时终止循环。表达式1只执行1次。也可写为:for(初始化语句;循环条件;自增或自减){循环内容}求1到100的和int i;int sum=0;for(i=1;i<=100;i++){sum+=i;}printf("%d\n", sum);表达式原创 2020-11-09 20:51:33 · 215 阅读 · 0 评论 -
循环与选择结构 while do while
whilewhile(表达式){语句块}先计算表达式的值,若为真,则执行语句块,之后再次计算表达式的值,若仍为真则继续执行语句块,如此循环直至表达式为假。用while循环计算1-100的和的值#include <stdio.h>int main(){int i=1,sum = 0;while(i<=100){sum+=i;i++;}printf("%d", sum);return 0;}while(1)即为一直执行while循环,直至用户强制关闭。whil原创 2020-11-09 20:50:44 · 136 阅读 · 0 评论 -
结构体链表大型例题(手机联系人通讯录程序)
#include <stdio.h>#include <string.h>/**定义一个联系人节点,包括联系人数据,还有下一个联系人节点的地址/typedef struct Contact {char name[50];char tel[11];struct Contact next;struct Contact* prev} Contact;/**定义一个通讯录,包括链表定义1:有一个节点,叫头节点,不存数据,只指向第一个节点链表定义2:有一个指针原创 2020-11-03 22:49:55 · 282 阅读 · 0 评论 -
判断选择结构 switch case
循环结构与选择结构(switch case)switch case分支过多时。用if else处理不方便,容易混乱,所以使用switch case语句switch(表达式){case 整形数值1:语句1;break;case 整形数值2:语句2;break;case 整形数值3:语句3;break;default:语句4;检验表达式与每个case后的值相等与否,若相等,就执行那个case冒号后的语句(若无break跳出执行后面所有分支case),若没有任一case相等,即执行d原创 2020-11-03 22:49:00 · 146 阅读 · 0 评论 -
判断选择结构if else
循环结构与选择结构if elseif(判断条件){语句块1}else{语句块2}if(a>b){printf(“a比b大”);}else{printf(“a比b小或a=b”)需要依次判断条件,可多个使用if else结构if(条件1){语句块1}else if(条件2){语句块2}else if (条件3){语句块3}嵌套(else总是与它前面最近的if配对)if(a!= b){if(a>b){printf(“a大于b”);else {printf原创 2020-11-03 22:48:21 · 173 阅读 · 0 评论 -
什么是?:(条件运算符)
?:先对表达式1做真假检测若表达式1为真,则返回表达式2的值。若表达式1为假,则返回表达式3的值。原创 2020-10-27 16:32:57 · 8347 阅读 · 0 评论 -
输入年份和天数,得知几月几日
输入某个月的第N周和这一周的第M天,通过int*GetDay()函数获取参数并返回结果,来得出这一天是这个月的第多少天?闰年:(年数是4的倍数时一般都是闰年,但当年份是100的倍数时,必须是400的倍数才是闰年)#include <stdio.h>#include <stdlib.h>char isRn(int year){return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;}int原创 2020-10-27 16:31:50 · 836 阅读 · 0 评论 -
200~300之间不能被3整除的数,5个一行输出
#include <stdio.h>#include <stdlib.h>int main(){int a=200;int b=0;for(;a<=300;a++){if(a % 3 != 0){printf("%d “, a);b++;if(b==5){printf(”\n");b=0; } }}return 0;}原创 2020-10-25 17:28:36 · 1485 阅读 · 0 评论 -
一些简单例题
打印日历,用户输入年分和月份两个变量,系统计算该月份的1号是星期几,并计算该月有多少天。最后打印出该日历。已知:1900年1月1日是星期一#include <stdio.h>#include <stdlib.h>int isRn(int year){ return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;}int main (void) {int year = 2025, month原创 2020-10-25 17:27:04 · 127 阅读 · 0 评论 -
数据类型相关
整型常量十进制:18、-31long int型常量 123l、123L、123456l、123456Lunsigned int型常量 123u、 123U根据实际数据大小确定int型还是long型l以数字“0”开始的整型常量是八进制数022、-037010和10大小不一样因为八进制并不常用,所以此种表示法比较少见l以“0x”或者“0X”开始的整型常量是十六进制AF和af用来表示十进制的10~15十六进制的形式比较常用:0x12、-0x1F, -0x1f实型常量十进制小数形式 :12原创 2020-10-25 17:25:15 · 272 阅读 · 0 评论 -
2020-10-24
最近几天学校的实习与课程事情比较多,还要考虑租房子的事情,没什么时间好好过一遍c,没办法了????原创 2020-10-24 14:47:33 · 35 阅读 · 0 评论 -
LINUX用户管理与文件权限管理相关命令
LINUX 用户管理与文件权限管理相关命令useradd 创建新用户useradd yuchenuseradd -g student yuchen 添加新用户时并指定组passwd yuchen 更改用户密码groupadd 创建一个新的工作组groupadd studentuserdel 删除用户账号userdel -r 删除用户账号及删除用户登入目录以及目录中所有文件(不删可能会保留垃圾文件)userdel -r yuchengroupdel 删除群组groupdel原创 2020-10-20 17:29:59 · 94 阅读 · 0 评论 -
2020-10-19
记录一些上的第一节linux命令课所做的笔记希望以后回来看看会有所感悟Open in Terminalreboot 重启 shutdown 关机ls 显示指定工作目录下内容ll(ls -l)亦将各种文件咨询显示出(ll -i显示更多参数)cal 日历 cal -1 查看本月月历 cal -3 查看前一个月 本月 下一个月月历cal -y查看全部月月历cat 打开文件 cat hello.txt(无文件将创建同名文件)echo 显示一段字符echo -e “xx” xx原创 2020-10-19 19:38:08 · 100 阅读 · 1 评论 -
2020-10-19
LINUX/bin 常用命令目录 可执行二进制目录文件/boot 启动程序/dev 设备文件/etc 启动关闭 配置 文件/home 根目录(普通用户)/root 超级用户工作目录(权限最大用户)/sbin 管理员常用管理目录/lib 共享链接库(库文件)/tmp 临时文件/proc 操作系统实时信息...原创 2020-10-19 19:36:36 · 139 阅读 · 0 评论 -
2020-10-17
今天开始了第一天的嵌入式学习,希望这条路可以让我喜欢上并达到人生高峰。原创 2020-10-17 18:42:40 · 48 阅读 · 0 评论