很多规则,读这书之前并不知道的,但可能你一直就是这么做了,也许你会惊讶。但是其实这些都是IDE在无形的帮助我们养成良好的习惯而努力。因为他会通过各种警告提示我们。
3.awk:编程语言,可对文本和数据进行处理 图片 图片 图片 图片 图片 图片 图片 图片 图片 如何进行四舍五入:+0.5 四、linux常见符号及其含义 图片 五、常见报错 图片 找不到文件
我们在指针初阶中介绍了指针的基本概念:如指针大小、野指针问题、指针间的关系运算等,在我们的指针进阶中,将会对指针进行进一步剖析,见识更深的指针!...图片来源:新浪网 ---- 正文 我们将在指针进阶中学习各种各样指针,比如字符指针、数组指针、函数指针等,这些指针种类虽多,但能力都很强大,作为进阶系列文章,涉及知识多多少少有点难度,但我们相信无论多么大的困难都无法阻挡我们的学习之路...,35} }; int sz_str = sizeof(s) / sizeof(s[0]);//结构体型部分 qsort(arr_c, sz_c, sizeof(arr_c[0]), cmp_c);...arr, sz, sizeof(arr[0]), cmp); //同样的模仿qsort函数传参 print(arr, sz);//打印函数 return 0; } ---- 总结 到这里指针进阶的基本内容已经介绍完了...当然指针进阶还有很多联系等着我们去挑战,我们的目标很简单——征服C指针,然后去实现我们的梦想!
指针的进阶 本章重点 字符指针 数组指针 指针数组 数组传参和指针传参 函数指针 函数指针数组 指向函数指针数组的指针 回调函数 指针和数组面试题的解析 指针的主题,我们在初级阶段的《指针》章节已经接触过了...ps指向的是字符串的首字符 //printf("%s\n", *ps);//%s打印的是字符串的内容 //*ps = 'w';//常量字符串不可以修改,这里的写法是错误的 //printf("%c\...const来修饰,防止通过p修改字符串 const char ps = “abcdef”;//这里的ps指向的是字符串的首字符 要想修改字符串中的内容需要用到数组: char arr[]="a b c...C/C++会把常量字符串存储到单独的一个内存区域,当 几个指针。指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化 不同的数组的时候就会开辟出不同的内存块。...void test(char **p) { } int main() { char c = 'b'; char*pc = &c; char**ppc = &pc; char* arr[10]; test
数组作为参数传递,会退化成为一个指针,传递的是首地址 (高效) 数据类型剖析 数据类型本质: 一块连续大小的内存空间 demo1 int a; //告诉c和c++编译器开辟一块连续大小的4字节的内存空间...数据类型别名 ```c /* Primitive types that match up with Java equivalents. */ typedef uint8_t jboolean; /*...所以在c当中一般都是指针传递 change(int number) ? changep(int* p_number) ?...printf("w=%d,h=%d", androidBitmapInfo.width, androidBitmapInfo.height); } getchar(); } 结构体强化 在c中...Student stu1 = {"张三",35}; Student stu2; stu2 = stu1; printf("%p , %p \n", &stu1, &stu2);//007CFD7C
#include int main(){ char ch = 'a'; char* p = &ch; *p = 'b'; printf("%c",
[root@localhost ~]# cat data3 The first meeting of the Linux System Administrator's group will be heald...[root@localhost ~]# sed 'N ; s/System.Administrator/Desktop User/' data3 The first meeting of the Linux...[root@localhost ~]# cat data3 The first meeting of the Linux System Administrator's group will be heald...[root@localhost ~]# sed -n 'N;/System\nAdministrator/P' data3 The first meeting of the Linux System...必须用ctrl+c停止 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [root@localhost ~]# echo "This, is , a,
C++进阶 函数模板 函数模板语法 函数模板作用: 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。...< typeid(T2).name() << endl; } }; void test02() { Son2 child1; } void test01() { Son c;...Name:" << (*it).mName << " Age:" << (*it).mAge << endl; } return 0; } STL- 常用容器 string容器 string是C+...= " << s1 << endl; const char* str = "hello world"; string s2(str); //把c_string转换成了string cout...+"); cout << "str4 = " << str4 << endl; string str5; str5.assign("hello c++",5); cout << "str5 =
Linux 磁盘管理进阶 磁盘分区介绍 基本分区(primary partion) 基本分区也称主分区,引导分区、每块磁盘分区主分区与扩展分区加起来不能大于四个。 ...如:hda5、hda6 .. hda、hdb、hdc、hdd 增一块按磁盘后面按字母顺序名称 a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘 fdisk 命令使用 用途:观察硬盘之实体使用情形与分割硬盘用...-L 'LABEL':设置卷标; -j:创建ext3文件系统,mkfs.ext3自带了该选项; -N:设置inode节点的数量; -m:设置为文件系统预留的块的百分比; -c:在创建文件系统前进程硬盘自检...mkswap可将磁盘分区或文件设为Linux的交换区。 语法: mkswap -cf-v1交换区大小 参数: -c 建立交换区前,先检查是否有损坏的区块。...开启SWAP分区 Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存。
经过我们前面9大章的介绍,我们今天给Linux进阶做一个总结。 第一章 Linux硬件 在硬件部分,我们首先介绍的就是ipmi,俗称带外,我们可以通过它完成对服务器的初始化的一些设置。...第二章 Linux日常运维 在Linux的日常运维中,我们主要介绍的一些基本的运维技巧,包括主机名和hosts,它可以满足一些软件用来标识机器和代替域名解析。...第四章 Linux日志 Linux日志,我们首先介绍的就是日志大集合的message日志,然后介绍4个和登录相关的日志。然后就是任务任务和监控日志sar。...及Linux的日志系统journal和内核日志dmesg和kdump。 第五章 Linux进阶命令 Linux进阶命令,首先就是介绍时间命令date,打印命令echo和别名命令alias。...第八章 Linux内核 Linux内核,介绍了内核的升级方式和查看加载内核模块和参数,然后介绍了3个虚拟文件系统。
如图: 函数指针的用途:转移表(出自《C和指针》这本书); 例如我们写一个简易的计算器代码: void menu() { printf("******************************
整型指针数组int* arr[5]; 例如,下面代码int* arr[]是个整型指针数组; int main() { int a = 10; int b = 20; int c...= 30; int d = 40; int* arr[] = { &a,&b,&c,&d }; int i = 0; for (i = 0; i < 4; i++)...指针传参 二级指针传参(以下都可以) void test(char ** p) {} //以下的都可以传上来 int main() { char c = 'b';...char* pc = &c; char** ppc = &pc; char* arr[10]; test(&pc); test(ppc); test(arr...字符数组 (1)char arr[] = { ‘a’,‘b’,‘c’,‘d’,‘e’,‘f’ }; printf("%d\n", strlen(arr)); //随机值,因为不知道\0的位置
模板参数分类类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参,就是用一个常量作为...
int main() { Stack st1; //存5个数据 Stack st2; //存10个数据 return 0; } 1.1.1 和C语言宏对比 这个和C语言的宏区别还是很大的...,C语言的宏只能存5个或者10个数据,不可以像上面这样st1存5个值,st2又能存10个数据。...注意: 1.非类型模板参数只能用于整形(bool也算整形),浮点数(C++20才支持)、类对象以及字符串是不允许作为非类型模板参数的。 2.. 非类型的模板参数必须在编译期就能确认结果。...相关文档:array - C++ Reference ,使用时包含头文件 #include 第一个模板参数T是类型模板参数,第二个模板参数N是非类型模板参数。...模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生 2. 增强了代码的灵活性 【缺陷】 1.
main() { //本质上把"kailong"这个字符串的首地址存储在了ps中 char* ps = "kailong"; char arr[] = "kailong"; printf("%c\...C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。...= 30; int * arr[3] = {&a, &b, &c}; 例子2: int a[5] = {1,2,3,4,5}; int b[] = {2,3,4,5,6}; int c[] = {3,4,5,6,7...}; int * arr[3] = {a,b,c}; 模拟了个二维数组,但并不是真正的二维数组。...void test(char **p) { } int main() { char c = 'b'; char*pc = &c; char**ppc = &pc; char
所以我们通常建议进行类模板特化而不建议函数模版特化 三、模版分离编译 一个程序由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程叫做分离编译模式 在之前的学习C语言的过程中...,我们通常在写一个某些功能的模拟实现时,会将声明写在头文件中,定义写在源文件中,声明与定义分离就是一种分离编译 一般C/C++程序运行的步骤为: 预处理–>编译–>汇编–>链接 预处理过程就是对程序进行提前处理...但是模版分离编译会导致模版函数不会进行实例化,导致链接时找不到地址而报错 解决办法就是声明和定义都在一个.h文件当中,这也是最好的一种方式 四、对于模版的总结 优点:模版复用了代码,节省资源,更快的迭代开发,C+
其他类型不在标准之内 非类型模板参数必须为常量(不可被修改),且需要在编译阶段确定结果 整型家族:char、short、bool、int、long、long long 等 1.3、实际例子:array 在 C+...private: int _t1; char _t2; }; int main() { Test T1(1, 2); Test T2(20, 'c'...(1, 2); return 0; } 声明与定义在同一个文件中时,可以直接找到函数的地址 代码从文本变为可执行程序所需要的步骤: 预处理:头文件展开、宏替换、条件编译、删除注释,生成纯净的C代码...+【模板进阶】的全部内容了,在本文中,我们学习了非类型模板参数,认识了 C++11 中的新容器 array;然后学习了模板的特化,见识了模板特化的各种场景;最后明白了模板声明与定义不能分离的根本原因,总之...,模板很强,但想要用好还得多练 C++ 初阶系列文章到此就正式结束了,后续将会继续更新 C++ 进阶内容,比如 继承、多态、高阶二叉树 等等高能知识点,敬请期待吧 ----
C/C++会把常量字符串存储到单独的一个内存区域, 当几个指针,指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。...*(*arr)[10] D.char(*)arr[10] 解析: A是二级指针数组,B是指针数组,C是char *数组的指针,D是char *的数组。...只有C是数组指针。 tip:根据优先级看只有C选项优先跟*结合,其他都不是指针,所以直接选C。...( ) A.int (*(*F)(int, int))(int) B.int (*F)(int, int) C.int (*(*F)(int, int)) D....* fun(int *) D.int* (*fun)(int *) 首先C压根就不是函数指针,先排除,然后D返回值不是int,排除,A的参数不是int *,排除,剩下B了。
模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生 2. 增强了代码的灵活性 【缺陷】 1. 模板会导致代码膨胀问题,也会导致编译时间变长 2.
return 0; } 2.C++的array类对标C语言静态数组 1....C++搞出来非类型模板参数的array类,实际对标的就是C语言的静态数组,array的第二个模板参数就是非类型模板参数N,我们在定义静态数组时,除C语言外的定义方式,还可以用array类来定义一个对象,...C++觉得C语言的检查机制不够严格,使用者在使用时有可能会因为越界访问导致程序出现意料不到的错误,所以C++出来了array类,array无论对于越界读还是越界写,他都可以检查出来,本质是因为他的检查机制是...int main() { //C++11想让我们用array,不想让我们用C语言的数组了,就因为C语言的越界检查不够严格,容易引发问题。...//C语言对于越界读,不检查。
领取专属 10元无门槛券
手把手带您无忧上云