自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 指针常量和常量指针

参考自:《C和C++程序员面试秘籍》指针常量:它本身不能被修改,指向的内容可以被修改。常量指针:它本身可以被修改,指向的内容不能被修改。const char *node1 = "abc";char *const node2 = "abc";char *node3 = "abc";node1[2] = 'k';/*error: assignment of read-only location ‘*(node1 + 2u)’*/*node1[2] = 'k';/*invalid type arg

2020-10-17 16:29:50 46

原创 复杂指针的声明和关于指针的几个小例子

参考自:《C和C++程序员面试秘籍》a: 一个有10个指针的数组,该指针是指向一个整型数的int *a[10]b:一个指向有10个整型数数组的指针int (*a)[10]c:一个指向函数的指针,该函数有一个整形参数并返回一个整型数int (*fun)(int)d:一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数int (*fun[10])(int)如何解读复杂指针?int (*func)(int *p);解析上面这行代码:首先找到未定义的标识

2020-10-17 15:50:08 19

原创 字节对齐

字节对齐的细节和编译器实现有关,一般而言,需要满足3个准则:1:结构体变量的首地址能够被其最宽基本类型成员的大小所整除2:结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍。如有需要,编译器会在成员之间加上填充字节。3:结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员之后加上填充字节。对齐是可以更改的,使用#pragma pack(x)可以改变编译器的对齐方式。C++固有类型的对齐取 编译器对齐方式(默认是8,除非#pragma pac

2020-10-15 16:27:04 15

转载 一个字由两个字节组成

字(word)、字节(byte)、位(bit)字 word : 1字=2字节(1 word = 2 byte ) 字长是指字的长度字节byte :1字节=8位(1 byte = 8 bit)位 bit一个字的字长为16一个字节的字长是8波特率bps 是 bits per second 的简称。一般数据机及网络通讯的传输速率都是以「bps」为单位。如56 Kbps、100.0Mbps 等。Bps即是Byte per second 的简称。而电脑一般都以Bps显示速度,如1Mbps 大约等同 12

2020-10-15 11:41:34 76

转载 C语言宏参数的字符串化和宏参数的连接

在宏定义中,有时还会用到 # 和 ## 两个符号,它们能够对宏参数进行操作。的用法用来将宏参数转换为字符串,也就是在宏参数的开头和末尾添加引号。例如有如下宏定义:#define STR(s) #s那么:printf("%s", STR(c.biancheng.net));printf("%s", STR(“c.biancheng.net”));分别被展开为:printf("%s", “c.biancheng.net”);printf("%s", ““c.biancheng.net””);

2020-10-15 11:28:52 56

原创 c++中main函数执行完后还执行其他语句吗

可以用atexit()函数来注册程序正常终止时要被调用的函数,并且在main()函数结束时,调用这些函数的顺序与注册它们的顺序相反。#include <stdio.h>#include <stdlib.h>void fn1(void);void fn2(void);int main(){atexit(fn1);atexit(fn2);printf(“main exit…\n”);return 0;}void fn1(){printf(“calling fn

2020-10-15 11:17:31 26

原创 C++与C有什么区别?

C是一个结构化语言,它的重点在于算法和数据结构。对语言本身而言,C是C++的子集。C程序的设计首先考虑的是如何通过一个过程,对输入进行运算处理,得到输出。对于C++,首先考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题,这样就可以通过获取对象的状态信息得到输出或实现过程控制。因此,C与C++的最大区别在于,它们用于解决问题的思想方法不一样。C实现了C++中过程化控制及其他相关功能。而在C++中的C,相对于原来的C还有所增强,引入了重载、内联函数、异常处理等。C++更是拓展了面向对象设计

2020-10-15 11:04:53 53

原创 如何学习linux内核网络协议栈?

如何学习linux内核网络协议栈?

2020-10-15 09:17:24 9

原创 带符号的char类型取值范围为什么是-128——127?

。。。

2020-10-14 23:15:56 10

原创 有符号变量和无符号变量的值的转换

当表达式中存在有符号类型和无符号类型时,所有的操作数都自动转换成无符号类型。有符号数如何转换成无符号数呢?其实并不需要转换,只不过是从内存中读取时不再认为最高位是符号位即可。举例:-7这个负数在内存中按照补码的形式存储,为11111111 11111111 11111111 11111001-7与正数做运算,根据规则是先转换为无符号数,再做运算,那就是说是;11111111 11111111 11111111 11111001

2020-10-14 22:13:20 44

原创 i++和++i 哪个效率更高

答案:如果只是内建数据类型,它们的效率差别不大(去除编译器优化的影响)。如果是自定义数据类型(主要指类),++i效率更高。此时我们不需要再做汇编代码的分析了,因为前缀式(++i)可以返回对象的引用,而后缀式只能返回对象的值,所以产生了在大对象时产生了较大的复制开销,引发效率降低。...

2020-10-14 15:10:49 25

原创 c语言中-号和++ --运算符优先级

-i++;-i--先输出-i,再分别进行+1和-1操作切记:不是对-i进行+1和-1

2020-10-14 15:01:42 50

原创 c++的::域操作符

在C++中可以通过域操作符::来直接操作全局变量:: value = 2;如果代码里同时有全局和局部的value,修改的是全局变量value,而不是局部变量value

2020-10-14 14:55:49 10

转载 面试官:谈一谈你对TCP协议的理解?

辛苦这位小哥了,写的很好,拿来保存一下。转载自:https://blog.csdn.net/qq_36963950/article/details/102566935

2020-09-20 19:49:50 16

原创 const全局变量和const局部变量是否可以修改

注意:以下程序编辑和运行于centos7 gcc环境,不同的编译器可能略有不同#include <stdio.h>#include <stdlib.h>const int a = 10;int main(){// int *pa = &a; //warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default]//

2020-07-18 11:40:26 182

原创 linux下size命令可以查看一个可执行二进制文件基本情况

首先编译生成可执行文件,假如源文件名为test.c,那么gcc -o test test.c生成可执行文件test。然后用命令size test查看该可执行二进制文件的基本情况[lll@localhost code]$ size testtext data bss dec hex filena

2020-07-17 22:46:54 200

原创 centos7 下安装gcc

刚装的系统,发现gcc命令不能用,安装gcc。已联网状态下,可以用yum安装:yum -y install gcc gcc-c++ kernel-devel //安装gcc、c++编译器以及内核文件安装非常快,立等可取,安装结束后,用gcc -v可以查看信息。...

2020-07-17 21:59:52 36

原创 CentOS系统安装之后如何增加并修改用户权限

增加用户,用户权限,修改密码增加用户:useradd zb(即:用户名为:zb)创建密码:passwd 123456删除用户:userdel -r赋予权限:进入root模式:su root增加修改文件的权限:chmod u+w /etc/sudoers编辑/etc/sudoers文件:vi /etc/sudoers找到这一行:”root ALL=(ALL) ALL”在起下面添加”xxx ALL=(ALL) ALL”(这里的xxx是你的用户名zb),然后保存。撤销修改文件的权限:chmod

2020-07-05 18:07:27 108

原创 scanf(“%[^\n]“, str)正则用法

scanf() 遇到空格结束输入可以用 scanf("%[^\n], str") 输入一行数据包括空格,直到遇到换行符 ’ \n ’scanf("%*[^\n]");//清理输入缓冲区中第一个\n之前的所有字符scanf("%*c"); //清理输入缓冲区中第一个字符,也就是上次遗留下的\nscanf("%*[^\n]%*c")是把这两句放在一起...

2020-07-05 16:33:30 219

原创 输入输出函数读取缓冲区数据的问题(scanf 、getchar、stdin)

https://www.cnblogs.com/yhjoker/p/7530837.htmlscanf函数读取缓冲区数据的问题

2020-07-05 15:19:13 43

原创 LINUX centos7 如何输入中文,实现中英文切换

安装好英文版的centos7之后,想在Linux中用火狐Firefox浏览器查东西,但是发现不能输入中文。上网查,发现好多方法,设置这个设置那个的。最后发现,centos7自带中文输入法。在系统工具-设置-区域和语言–按“+”号Add 智能拼音然后使用super+space键(就是windows窗口+空格键)就可以实现中英文切换了。...

2020-06-27 15:42:43 899

原创 CentOS7 原装中文系统改为英文系统

安装时选择的是中文,后来觉得还是改为英文比较好,不想重装一遍,就在网上查了一下,奇怪的是,试了别人说的好几种怎么不行呢。。刚开始使用Linux,可能还是自己不会用的缘故吧。下面这种方法,试了是可以的。切换到root用户,vi /etc/locale.conf里面有lang变量,将变量的值改为 en_US.utf8然后 esc :wq 保存并退出shutdown -r now 重启即可重启之后发现,还是有中文的目录 “下载”,同时还有一个英文的目录Downloads可能是因为之前下载了东西,

2020-06-27 14:47:27 185

转载 网络间进程通信

设备本地进程间通信可以用进程PID来唯一标识一个进程,网络间进程通信用的是三元组(IP地址,协议,端口)。其中,网络层的IP地址可以唯一标识网络中的某一台主机,传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。...

2020-04-24 09:50:49 99

原创 进程与线程

参见https://interview.huihut.com/#/?id=%e8%bf%9b%e7%a8%8b%e4%b9%8b%e9%97%b4%e7%9a%84%e9%80%9a%e4%bf%a1%e6%96%b9%e5%bc%8f%e4%bb%a5%e5%8f%8a%e4%bc%98%e7%bc%ba%e7%82%b9对于有线程系统:进程是资源分配的独立单位线程是资源调度的独立单位...

2020-04-20 17:25:06 40

原创 #ifndef #define #endif 和 extern "C"的作用

ifndef #define #endif 防止头文件被重复引用被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。比如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include “a.h” 和#include "c.h"此时就会造成c.h重复引用。头文件被重复引用引起的后果:有些头文件重复引用只是增加...

2020-04-20 15:53:28 65

原创 C语言函数参数--数组长度

int read_column_numbers(int columns[], int max){}在函数声明的数组参数中,并未指定数组的长度。这种格式是OK的,因为无论调用函数的程序传递给它的数组参数的长度是多少,这个函数都将照收不误。这是一个伟大的特性,它允许单个函数操纵任意长度的一维数组。这个特性不利的一面是函数没法知道该数组的长度。如果确实需要数组的长度,它的值必须作为一个单独...

2020-03-11 16:03:34 95

原创 编译 链接

在绝大多数UNIX系统中,C编译器被称为cc。编译并链接一个完全包含于一个源文件的C程序:cc program.c这条命令产生一个称为a.out的可执行程序。中间会产生一个名为program.o的目标文件,但它在链接过程完成后会被删除。编译并链接几个C源文件cc main.c sort.c lookup.c当编译的源文件超过一个时,目标文件便不会被删除。这就允许你对程序进行修改后...

2020-03-11 15:30:42 33

原创 C语言 gets函数 puts函数 getchar函数

gets函数从标准输入读取一行文本并把它存储于作为参数传递给它的数组中。一行输入由一串字符组成,以一个换行符(newline)结尾。gets函数丢弃换行符,并在改行的末尾存储一个NULL字节(一个NULL字节是指字节模式为全0的字节,类似’\0’这样的字符常量)。然后,gets函数返回一个非NULL值,表示该行已被成功读取。当gets函数被调用,但事实上不存在输入行时,它就返回NULL值,表...

2020-03-11 14:41:43 205

原创 计算机系统之 大端法和小端法

记得四年前同事跟我说他入职的时候问了关于大小端的问题,记得三年前自己第一次接触大小端的问题,一晃这么多年过去了,自己在阅读的时候多次看到这个东西。有时候想想,如果这些书是我上学的时候看的,那现在的我是不是就不是这个样子了。亡羊补牢,但愿为时未晚。某些机器选择在内存中按照从最低有效字节到最高有效字节的顺序存储对象,而另一些机器则按照从最高有效字节到最低有效字节的顺序存储。前一种规则—最低有效字节在...

2020-02-21 11:06:42 99

原创 hello程序的漫游历程

#include<stdio.h>int main(){ printf("hello, world\n); return 0;}相信大家都知道这个著名的家伙,hello world,万物起源。本文的目的就是一起来看看,当这个hello程序在系统上运行时,系统发生了什么以及为什么会这样。hello程序的生命周期是从一个源文件(源程序)开始的,文件名为hello.c。源程...

2020-02-19 16:41:04 86

原创 关于CPU的一点知识

首先说一下,CPU是干啥的:CPU所负责的就是解释和运行最终转换成机器语言的程序内容我们需要知道的CPU结构:重点需要关注寄存器运算器简单说就是负责运算从内存读取到寄存器中的数据,可以看作一个数据加工厂,就是对寄存器中的数据做运算,这些运算包含基本的算术和逻辑运算。算术逻辑单元(ALU)这个是运算器中重要的一个组成,主要负责的就是对数据的处理,从而实现对数据的算术和逻辑运算...

2020-02-19 12:00:41 21

原创 出来混,迟早都是要还的

你曾经因为偷懒而逃过的苦,而少罪的罪,到后来都会一股脑的再还给你,让你痛苦到想哭晕在厕所。总会在互联网上看到IT技术大神们分享自己的成功经验,什么从初中就开始编程,什么从大一就开始做项目,什么每天多少道leetcode题,什么在校期间怎么学习数据结构和算法。总之,有些是你也有条件做的,有些是你没条件做的。有时候会想,我当时都在干嘛呢?回想自己的读书生活,自认为应该对得起学费,对得起父母,每天勤...

2020-02-19 09:18:11 60

原创 C/C++语言基础知识 之 引用和指针

关于引用引入是C++引入的新语言特性。1 int &rn = a;-----------------------------------------------2 int* p = &a;3 int* &pa = p;4 (*pa)++;5 pa = &b;6 (*pa)++;L1:声明rn为变量a的一个引用,不需要为...

2020-02-18 11:33:07 16

转载 C语言常见问题

在C语言中,有一个“流”的概念;流可以分为两种类型:文本流(文件)和二进制流(文件);文本流是解释性的,最长可达255个字符;二进制流是非解释性的,一次处理一个字符。在用C语言编程的时候,我们都是用#include指令包含类型为".h"的文件,那么可以用该指令包含类型不为".h"的文件吗?答案是:可以。我也是刚才看到这个的。在C语言中,我们经常使用宏;那么编程的时候,是使用宏更好,...

2020-02-17 11:17:17 22

转载 Linux基础知识3

原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6876344原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6878477原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6...

2020-02-17 11:11:29 31

转载 Linux基础知识2

原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6866724原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6870209原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6...

2020-02-17 11:05:28 25

转载 Linux基础知识1

原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6856887原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6859769原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/6...

2020-02-17 10:57:38 20

原创 C语言常见面试题3 之 基础知识

(1)i++和++i哪个效率更高?对于内建数据类型,二者效率差别不大(去除编译器优化的影响)对于自定义数据类型(主要是类),因为前缀式(++i)可以返回对象的引用;而后缀式(i++)必须返回对象的值,所以导致在大对象时产生了较大的复制开销,引起效率降低。(2)不使用任何中间变量如何交换a b的值?void swap(int& a, int& b)//采用引用传参的方式...

2020-02-17 10:08:30 75

原创 C语言常见面试题2 之 常考排序算法

(1) 编程实现直接插入排序#include <iostream>using namespace std;void insert_sort(int a[], int n){ int i, j, temp; for(i=1; i<n; i++) { temp = a[i]; for(j=i-1; j>=0 && temp <a[j...

2020-02-13 16:31:40 234

原创 C语言常见面试题1 之 基础知识

(1)如何用C语言编写死循环?首选方案,也是C程序员最常用的方案如下:while(1){}第二种方案:for(;;){}第三种方案:Loop:...goto Loop;不过,大多数人是会用第一种的。(2)如何访问特定位置的内存?嵌入式系统的某些工程里,会要求设置一个绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI...

2020-02-12 22:22:14 54

Openet Modeler论坛精华.pdf

Openet Modeler论坛精华希望对别人有用。

2014-01-15

空空如也

空空如也

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

TA关注的人 TA的粉丝

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