自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhabin0607的博客

学习 交流 共同进步

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

原创 【C】26.指针的本质分析

问题:程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段存储空间? int i = 5; int* p = &i; printf("%d, %p\n", i, p); *p = 10; printf("%d, %p\n", i, p);上述程序 通过指针变量 p 修改了 程序变量 i ...

2019-11-30 14:49:59 393

原创 【C】25.# 和 ## 操作符使用分析

# 介绍#include <stdio.h>#define STRING(x) #xint main(){ printf("%s\n", STRING(Hello world!)); printf("%s\n", STRING(100)); printf("%s\n", STRING(while)); printf("%s\...

2019-11-29 15:52:03 102

原创 【C】24.#pragma 使用分析

#pragma一般用法#pragma parameter不同的 parameter 参数语发和意义不相同, 不同编译器对它有不同的编译方式.,#pragma message#pragma message 与 #error 和 #waring 不同,它仅代表一条编译消息,不代表程序错误。#include <stdio.h>#if defi...

2019-11-28 16:29:31 128

原创 【C】23. #error 和 #line 使用分析

#error分析#error 用于生成一个编译错误信息用法:#error messagemessage 不需要用双引号包围#error 是一种预编译器指示字,可以提示编译条件是否满足。(编译过程中任意错误信息意味着无法生成最终稿的可执行程序)#include <stdio.h>#ifndef __cplusplus #error This...

2019-11-27 16:36:17 116

原创 【C】22.条件编译使用

条件编译#if#else#endif条件编译的行为类似与C语言中的 if ... else ...条件编译器是预编译指示命令,用于控制是否编译某段代码。// #include <stdio.h>#define C 1int main(){ const char* s; #if( C == 1 ) s = "This i...

2019-11-26 23:09:16 91

原创 【C】21.宏定义与使用分析

#define介绍#define是预处理处理的单元实体之一。定义的宏可以出现在程序的任意位置,定义之后代码都可以使用这个宏。预处理器不会进行语法分析的(直接进行文本替换),后面的编译器才进行语法分析,这个过程很容易产生歧义错误。#define 定义的宏常量可以直接使用#define 定义的宏常量本质为字面量#define ERROR -1#define PAT...

2019-11-25 23:28:35 351

原创 【C】31.字符串经典问题分析

案列一:分析下面程序,程序输出是什么?#include <stdio.h>int main(){ char buf[10] = {0}; char src[] = "hello %s"; snprintf(buf, sizeof(buf), src); printf("buf = %s\n", buf); ...

2019-11-23 16:30:50 170

原创 【C】30.C语言中的字符串

C中字符串概念字符串 是有序字符的集合(是程序中基本元素之一)C语言中没有字符串的概念C语言中通过特殊的字符数组模拟字符串(特殊的字符数组是有 \0 作为结尾)C语言中字符串都是以 \0 结尾的的字符数组'\0' 介绍:'\0'是 ASCII 码表中的第 0 个字符,英文称为 NUL,中文称为“空字符”。该字符既不能显示,也没有控制功能,输出该字符不会有任何效果,它在...

2019-11-20 16:47:32 415

原创 【C++】21.对象的构造顺序

实际开发中,因为对象的构造顺序的问题导致bug很多。那么C++中的类可以定义多个对象,那对象构造的顺序是怎样的?局部对象程序执行流到达对象的定义语句时进行构造。class Test{ int i;public: Test(int i) { this->i = i; cout << "Test(int...

2019-11-19 15:04:56 167

原创 【C++】52.C++中的抽象类和接口

面向对象中的抽象概念面向对象分析,出现一些抽象概念,比如 图形的面积如何进行计算?在现实中需要知道具体的图形才能计算面积,所以对概念上的 “图形”求面积是没有意义的!class Shape{public: double area() { }};shape只是概念上的类型,没有具体对象。问题:shape这样类似的类型有必要存在吗?...

2019-11-18 19:24:36 134

原创 Linux内核中两个宏分析

Linux 内核中常用的两个宏// 第一个宏#ifndef offsetof#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE*)0)->MEMBER)#endif// 第二个宏#ifndef container_of#define container_of(ptr, type, member) ({ ...

2019-11-18 14:43:27 238

原创 【C++】48.同名覆盖引发的问题

什么是父子间的 赋值兼容 问题?子类对象可以当做父类对象使用(兼容性)#include <iostream>#include <string>using namespace std;class Parent{public: int mi; void add(int i) { mi += i; ...

2019-11-15 14:49:58 117

原创 【C++】47.父子间的冲突

问题1:子类是否可以定义父类中的同名成员?如何可以,如何区分?如果不可以,为什么?#include <iostream>#include <string>using namespace std;class Parent{public: int mi;};class Child : public Parent{public: ...

2019-11-14 16:49:49 119

原创 【C++】49.多态的概念和意义

函数重写:父类中被重写的函数依然会继承给子类。子类中重写的函数将覆盖父类中的函数。通过作用域分辨符可以访问父类中的函数。class Parent{public: void print() { cout << "I'm Parent." << endl; }};class Child : public Par...

2019-11-12 16:12:22 180

原创 线程锁使用经验

锁使用实践经验总结:一.减少锁的使用锁使用带来如下性能损失:1.加锁和解锁操作,本身有一定的开销;2.临界区的代码不能并发执行;3.入临界区的次数过于频繁,线程之间对临界区的争夺太过激烈,若线程竞争互斥量失败,就会陷入阻塞,让出 CPU,因此执行上下文切换的次数要远远多于不使用互斥量的代替锁的办法有很多,如使用无锁队列。二.明确锁的范围if(hashtabl...

2019-11-11 17:05:51 143

原创 【C++】35.函数对象分析

编写一个函数:函数可以或得斐波那契数列的每一项。每调用一次返回一次。函数可以根据需要重复使用。#include <string>using namespace std;int fib(){ static int a0 = 0; static int a1 = 1; int ret = a1; a1 = a0...

2019-11-07 17:24:17 63

原创 【C++】外传篇1:异常的深度解剖

问题1:如果在main函数中抛出异常,结果会怎么样?include <iostream>using namespace std;class Test {public: Test() { cout << "Test()"; cout << endl; } ~Test(...

2019-11-07 10:01:13 108

原创 【C】42.内存操作相关问题分析二

常见的内存错误:结构体成员指针未初始化。结构体成员指针未分配足够的内存。内存分配成功,但未初始化。内存操作越界。#include <stdio.h>#include <malloc.h>struct Demo{ char* p;};int main(){ struct Demo d1; // 没初始化有问题 s...

2019-11-05 10:08:43 92

原创 【C】41.内存操作相关问题分析一

野指针:指针变量中的值是非法的内存地址,进而形成野指针。野指针不是NULL指针,是指向不可用内存地址的指针。NULL指针并无危害,很好判断也很好调试。C语言中无法判断一个指针保存的地址是否合法野指针的由来:局部指针变量没有被初始化。指针所指向的变量在指针之前被销毁。使用已经释放的过的指针。进行了错误的指针运算。进行了错误的强制类型转换。#inclu...

2019-11-05 09:58:30 85

原创 【C++】59.类模板的深度解剖

类模板可以定义任意多个不同类型的参数template <typename T1, typename T2>class Test{ public: void Add(T1 a, T2 b);};Test<int, float>t//一一指定参数类型。类模板的特化根据需要分开实现(可以在特化的地方实现不同的函数),本质还是同一个模...

2019-11-02 10:20:45 124

原创 【C++】58.类模板的概念和意义

C++将泛型编程的思想运用到类中C++类模板以相同的方式处理不同的类型。类声明前使用 template进行标识。<typename T> 用于说明类中使用泛型类型Ttemplate <typename T>class Operator{ public: T op(T a, T b);};类模板的应用只能显示指定具体的类型...

2019-11-01 10:02:09 107

空空如也

空空如也

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

TA关注的人

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