![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
文章平均质量分 56
未解供耕织
这个作者很懒,什么都没留下…
展开
-
Linux进程间通信demo.c
1.错误处理函数:#include<stdio.h>#include<errno.h>#include<string.h>int main(void){ FILE *Fr = fopen("./2.txt", "r"); //全局变量errno会实时更新,装载的是最新被调用的系统回调的操作状态 //如下面操作,如果2.txt打开成功,errno装载的值表示的是success,否则其 //装载的值表示的是failed原创 2021-07-06 16:51:44 · 67 阅读 · 0 评论 -
C语言函数strstr(str1,str2),当str2为空串时。。。
前几天上班一个问题找了好久,后来发现是字符串库函数strstr(str1,str2)用错了,当时理所当然的认为当str2为空串时,返回值应当为NULL,因为传入参数为空应当直接返回嘛,但后来写个demo一编才发现返回的是str1的首地址:#include<stdio.h>#include<string.h>int main(void){ char st...原创 2020-03-10 08:16:11 · 1271 阅读 · 0 评论 -
自己实现c常见字符串函数
1.strlen()int my_strlen(const char *s){ int len=0; if(s==NULL) { printf("error: null pointer...\n"); len=-1; goto end; } while(*s++!='\0') { ...原创 2018-08-31 21:21:51 · 192 阅读 · 0 评论 -
linux和windows中的换行符区别
linux中编写的文本文件在windows中用计事本中打开时,原本有的换行没有了。根本原因就是:linux中一个转义字符\n起换行作用,即在linux中编辑文本文件时,按下enter键,宏观上我们看到光标移到了新的一行开头,而对于文件内容来说相当于在行尾隐式添加转义字符\nwindows中两个连续的转义字符\r\n起换行作用,即在windows中编辑文本文件时,按下enter键,宏观上我们...原创 2018-09-04 22:53:20 · 1142 阅读 · 0 评论 -
很经典的一篇c++虚继承的分析
https://blog.csdn.net/xiejingfa/article/details/48028491转载 2018-09-13 11:58:22 · 193 阅读 · 0 评论 -
彻底弄懂 Unicode 编码
原文:https://blog.whezh.com/encoded/今天,在学习 Node.js 中的 Buffer 对象时,注意到它的 alloc 和 from 方法会默认用 UTF-8 编码,在数组中每位对应 1 字节的十六进制数。想到了之间学习 ES6 时关于字符串的 Unicode 表示法,突然就很想知道 UTF-16 是如何进行编码的,我尝试将一些汉字转换成二进制数,然后简单的按 2...转载 2018-10-22 09:53:28 · 208 阅读 · 0 评论 -
linux c/c++学习笔记
一、c基础问题1.c各种基本数据类型是否由于操作系统的不同而不同?具体呢? char short int float double long longlong (单位:字节)32位平台: 1 2 4 4 8 4 864位平台: 1 2 4 4 8 8 8注:对于各种数据类型,有符号和无符号所占字节一样,只不过有符号的最高位是符号位2.为什么sigh char类型的127+1=-128?因为...原创 2019-02-14 21:33:43 · 644 阅读 · 1 评论 -
c++在类外调用类的私有成员函数的两种方法
1.通过类的public成员函数调用private成员函数:#include<iostream>using namespace std; class Test{ public: void fun2() { fun1(); } private: void fun1()...原创 2018-08-02 20:03:50 · 28781 阅读 · 0 评论 -
c++对“匿名对象”的两种处理方法
1.对于语句:class A; A="匿名对象";待对象A把"匿名对象"的数据复制过来后,“匿名对象被释放” 运行结果:从执行结果可以看出,fun()函数内的p和main()函数中的p1地址不同,且有两次构造和两次析构,证实了上面的说法。 2.对于语句:class A="匿名对象";匿名对象被直接“扶正”,不被释放运行结果:由上面执行结果可知,fun(...原创 2018-08-01 23:30:33 · 1386 阅读 · 1 评论 -
三步解决C语言中struct字节对齐问题
直入主题,要判断一个结构体所占的空间大小,大体来说分三步走:1.先确定实际对齐单位,其由以下三个因素决定 (1)CPU周期 WIN vs qt 默认8字节对齐 Linux 32位 默认4字节对齐,64位默认8字节对齐 (2)结构体最大成员(基本数据类型变量) (3)预编译指令#pragma pack(n)手动设置 n--只能...原创 2018-08-01 23:03:39 · 23756 阅读 · 2 评论 -
3.c中关于程序中的gets()语句被跳过,不接受键盘输入的原因
C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。 当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了这一句 原因深入分析:当程序执行到gets()这一句时,跑去输入缓冲区读取内容...原创 2018-03-08 16:09:10 · 8085 阅读 · 3 评论 -
4.c中常用的字符串处理函数
1>gets()和puts()//字符串的键盘读取和屏幕输出gets()用于字符串的读取,使用行缓冲,从键盘输入一段字符并按下回车键时,开始从键盘缓冲区读取,并丢弃换行符\n,自动添加空字符\0.gets()的缺点是当输入的字符数超过了用来存放的字符型数组的大小,就会溢出到相邻的内存中。puts()用于字符串的屏幕输出,并于结尾自动添加换行符\n.2>strcat()strcat(s1...原创 2018-03-08 15:56:47 · 186 阅读 · 0 评论 -
2.c中常用的输入输出函数总结
1>scanf()和 printf()//支持格式控制符的输入和输出scanf()的返回值是成功读入的项目的个数,如:num=scanf("%d%d",&a,&b);如果a、b均读入成功,则num 的值为2scanf()除了%c模式之外,在读取输入时,均跳过空白字符(制表符、空格、换行符),直到第一个非空白字符处开始读取,读至遇到下一个空白字符或与正在读取类型不符的字符停止。...原创 2018-03-08 16:06:28 · 240 阅读 · 0 评论 -
c语言字符串知识总结
由上面的例子可以知道111和222,222和333之间的换行符\n被丢弃,只有333后面的换行符\n被遗留在缓冲区,因为a和b按%s读取内容时,自动丢弃了缓冲区最前面的换行符\n,然后第一个getchar()读取了缓冲区的第一个字符:'\n',后面两个getchar()则分别读取了‘a’、‘b’,语句运行到这里,其实缓冲区还遗留着c'\n',若想清除,可以使用语句while(getchar()...原创 2018-03-19 13:52:42 · 488 阅读 · 0 评论 -
9.计算机4G的内存的地址编码范围是?
计算机内存的地址编码是以字节为单位的,即每字节内存都有个编号,8个二进制位为一个字节。所以4G内存的地址范围是0x00000000~0xffffffff那反过来问:为什么理论上32位系统最大只支持4G内存呢?答:32位系统的“32”位是指cpu的地址总线是32根,这样就可以表示0~2^32-1一共2^32个地址,而地址编码是以字节为单位,所以内存最大2^32个字节,即4G...原创 2018-03-19 12:12:24 · 8014 阅读 · 2 评论 -
5.计算机二进制存储原码、反码、补码的问题
计算机中,数值均以补码形式存储,正数的原码、反码、补码相同。负数的反码由原码符号位不变其余位取反求得,补码等于反码+1。补码求原码可用相反步骤。所以欲把计算机存储的二进制转换为相应的十进制数值的一般步骤是:1)先看这个数是有符号数还是无符号数,若是无符号/正数,则直接转化为十进制;2)若为负数,则存储的是补码,最高位不变,-1得到其反码,然后最高位不变,其余位全部取法得到原码,然后转化为十进制并添...原创 2018-03-15 23:03:08 · 951 阅读 · 0 评论 -
10.c语言中float\double类型数据的存储
转载地址:https://www.cnblogs.com/wuyuan2011woaini/p/4105765.htmlC语言和 C#语言中,对于浮点型的数据采用单精度类型(float)和双精度类型(double)来存储:float 数据占用 32bit;double 数据占用 64bit;我们在声明一个变量 float f = 2.25f 的时候,是如何分配内存的呢?其实不论是 float 类型...转载 2018-03-19 14:12:53 · 1701 阅读 · 0 评论 -
超全面的c/c++虚拟内存4区结构图
我们常说的32位系统为每个进程分配4G虚拟内存空间(而MMU负责把这些个4G虚拟内存映射到实际内存条的物理内存),其实只有0~3G才是真正完全属于进程本身,是我们所说的用户区;3~4G这1G是所有进程间共享的,是我们所说的内核区,我们的程序是无法直接访问内核区的。#include<stdio.h>int a; //未初始化全局区 .bssint b=1; /...原创 2018-07-22 21:15:44 · 2419 阅读 · 0 评论 -
基于C程序启动代码的深入分析
转载于:www.yw1515.com/news/2018-04-06/126714.html一、映像文件基本组成映像文件加载时域包括RO和RW段,运行时域则包括RO、RW和ZI三个段。其中RO和RW段的内容在加载时和运行时是一样的,只是存储空间可能不同,而ZI段则是运行时由初始化函数创建的。RO段:Read-Only段,包括源程序中的CODE段,只读数据段(包括变量的初始化值——可以是任意...转载 2018-08-05 10:56:12 · 666 阅读 · 0 评论 -
1.c中如何用最简洁的代码判断任意整数的位数?
//最简洁的代码判断任意整数的位数int get_length(int num){ int len=0; while(num) { num/=10; len++; } return len;}原创 2017-12-10 21:10:46 · 546 阅读 · 0 评论