
C语言
文章平均质量分 78
托马斯.杨
这个作者很懒,什么都没留下…
展开
-
计算机中的大端存储和小端存储
一、大小端介绍"大端"和"小端"表示多字节值的哪一端存储在该值的起始地址处;小端存储在起始地址处,即是小端字节序;大端存储在起始地址处,即是大端字节序。大端存储模式:数据的低位保存在内存中的高地址中,数据的高位保存在内存中的低地址中;小端存储模式:数据的低位保存在内存中的低地址中,数据的高位保存在内存中的高地址中;二、为什么会有大小端存储模式1、cpu和编译器的不同在计算机系统中我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit,但是在C语言中除了8bit的char之外,原创 2020-05-25 17:07:35 · 38888 阅读 · 8 评论 -
编译过程简单分析(C语言)
C程序由源程序变为可执行文件的四个过程是:一.预编译预编译又称为预处理,是做些代码文本的替换工作,是整个编译过程的最先做的工作。(1)处理所有的注释,以空格代替(2)讲所有的#define删除,并且展开所有的宏定义(3)处理条件编译指令#if,#ifdef、#elif,#else、#endif(4)处理#include,展开文件包含(5)保留编译器需要使用#pragma指令二...原创 2019-07-21 09:41:16 · 219 阅读 · 0 评论 -
c语言中的文件处理函数
文件指针缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态 及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明:例如,VS2008编译环境提供的 stdio.h 头文件中有以下的文件类型申明:struct _iobuf { c...原创 2019-06-19 19:16:35 · 542 阅读 · 0 评论 -
内存操作函数memcpy memmove memset memcmp
1.memcpyvoid * memcpy ( void * dest, const void * src, size_t num )(1)函数memcpy从src的位置开始向后复制num个字节的数据到dest的内存位置。(2)这个函数在遇到’\0’ 的时候并不会停下来。(3)如果src和dest有任何的重叠,复制的结果都是未定义的 。void *my_memcpy(void *de...原创 2019-06-09 08:51:20 · 428 阅读 · 0 评论 -
strcmp和strncmp函数
1.strcmpThis function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ or until a terminating null...原创 2019-05-29 20:19:08 · 1878 阅读 · 0 评论 -
c语言中逻辑运算和算术运算中左右移位的区别
C语言中有逻辑运算和算术运算两种操作,数据在内存中都是以二进制转换其补码存放的。显然,直接使用位操作要比其他操作效率高,下面我们来通过一些 代码看一下两者的区别:int a = -1; // 1111 1111 1111 1111 1111 1111 1111 1111 (补码)printf("%d\n", a >> 1); // 1111 1111 111...原创 2019-04-09 08:29:54 · 419 阅读 · 0 评论 -
c语言中0作为分母的异常情况
1.定义一个整型变量ret接收0作为分母得到的值 ,程序如下:#include<stdio.h>#include<stdlib.h>int main(){ int ret = 1 / 0; printf("%d\n", ret); system("pause"); return 0;}在vs2013编译器中,我们可以看到会出现以下这个错误提示:显然...原创 2019-04-09 07:55:06 · 4066 阅读 · 0 评论 -
c 语言中的#和##
下面举两个实例:1."#"#define M 100#define print(F,V)\ printf("the value of " #V " is "F ,V) //加上#不会替换参数,只替换其所对应的字符;int main(){ print("%d", M); return 0;}运行结果:2."##"define CAT(str1,原创 2019-02-27 12:26:04 · 739 阅读 · 0 评论 -
C语言中的申明和定义
申明和定义声明定义可以多次出现只能出现在一个地方描述对象的类型,用于指代其他地址,例如:extern int my_array[];确定对象的类型并分配内存,用于创建新的对象,例如:int my_array[100];...原创 2019-02-15 16:26:14 · 233 阅读 · 0 评论 -
#include的含义
#include预处理指令比如 #include<stdio.h>意思就是程序在编译链接过程中把<stdio.h>文件里的东西全部拷进来,进行预处理;拷贝时:去掉注释;替换宏;...原创 2019-02-15 10:28:44 · 1607 阅读 · 0 评论 -
strcat和strncat链接函数
My_strcat()链接函数#include "stdafx.h"#include&lt;iostream&gt;#include "assert.h"using namespace std;char *my_strcat(char *str2, const char *str1){ char *p =str2; assert(str1 != NULL || NULL !=原创 2018-12-26 13:42:20 · 287 阅读 · 0 评论 -
strcpy和strncpy拷贝函数
My_strcpy(char ch2, const char ch1)函数#include "stdafx.h"#include&lt;iostream&gt;#include "assert.h"using namespace std;void my_strcpy(char *ch2, const char *ch1){ char *p = ch2; assert((p原创 2018-12-25 18:39:04 · 1233 阅读 · 0 评论 -
strlen函数
#include &quot;stdafx.h&quot;#include&amp;lt;iostream&amp;gt;using namespace std;#define ERROR 1int my_strlen(const char *p){ if (NULL == p)return ERROR; const char *str = p; for (; *p != '\0'; p++){} ret原创 2018-12-25 18:29:50 · 273 阅读 · 0 评论 -
栈区堆取数据区和代码区
1.栈区(stack):由系统的编译器自动的释放,主要用来存放方法中的参数,一些临时的局部变量等,并且方法中的参数一般在操作完后,会由编译器自动的释放掉。2.堆区(heap):由程序员决定,在Java中,如果程序员不释放的话,一般会由垃圾回收机制自动的清理掉。此区域主要用来存放我们经常创建的对象、动态的申请的临时空间等。3.数据区(data seg):也称全局区或者静态区,根据名称我们就...原创 2018-12-25 16:30:23 · 280 阅读 · 0 评论 -
Const 的使用
Const 的使用const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。原创 2018-12-25 16:18:06 · 82 阅读 · 0 评论 -
用一个函数交两个整型的值
用一个函数交两个整型的值#include "stdafx.h"#include&lt;iostream&gt;using namespace std;int swag(int *a, int *b){ int p = *a; *a = *b; *b = p; return 0;}int main(){ int x = 10, y = 20; cout &lt;&原创 2018-12-25 15:56:47 · 138 阅读 · 0 评论 -
输入年月日输出此日是此年的第几天
输入年月日加上多少天输出日期程序1#include"stdafx.h"#include&lt;iostream&gt;using namespace std;#define YEARERROR -2#define MONTHERROR -1#define DAYERROR -3bool Is_Leap(int year){ return (year % 4 == 0 &amp...原创 2018-12-25 15:54:56 · 2373 阅读 · 0 评论 -
输入年月日输出此年此月有几天
输入年月日输出次日是今年第几天#include&amp;quot;stdafx.h&amp;quot;#include&amp;amp;lt;iostream&amp;amp;gt;using namespace std;#define MONTHERROR -1#define YEARERROR-2bool Year(int year){ return ((year % 4 == 0 &amp;原创 2018-12-25 15:50:02 · 291 阅读 · 0 评论 -
exit(0)和_exit(0)区别
exit(0)和_exit(0)从图片中我们可以看出,通过exit(0)来结束掉main函数的程序可以输出结果,通过调用_exit(0)函数的程序不能输出结果。原创 2018-12-25 15:45:36 · 7432 阅读 · 0 评论 -
1024程序员节
哈哈哈哈原创 2019-10-24 18:16:42 · 148 阅读 · 0 评论 -
输入一个数,查找它在数组中的下标
输出结果:原创 2018-12-25 16:12:13 · 4805 阅读 · 4 评论 -
C语言中的动态内存分配函数malloc,calloc 和 realloc
include<ralloc.h>realloc(void *__ptr, size_t __size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。如果将分配的内存减少,realloc仅仅是改变索引的信息。如果是将分配的内存扩大,则有以下情况:1)如果当前内存段后面有需要的内存空间,则直接扩展这段内存空间,realloc()将返回原指针。2)...原创 2019-01-18 11:49:44 · 680 阅读 · 0 评论 -
include尖括号和include双引号的区别
include&lt;stdio.h&gt;和#include"stdio.h"的区别1.include&lt;stdio.h&gt;默认查找系统头文件2.include"stdio.h"先在当前工作目录查找,如果找不到,再在系统目录里查找;...原创 2019-02-15 10:40:08 · 408 阅读 · 0 评论 -
C语言关键字volatile
int main() { volatile int i = 10; int k = i; return 0;}这段代码如果没有加上volatile,它的执行过程是 i = 10, 10 ->reg寄存器,k = reg值,就是说,k=i实际上是从寄存器里读出来的。这样快捷高效,当然并不是每次都这样,因为寄存器有限。如果在10->reg寄存器的时候,i存...原创 2019-02-25 16:10:13 · 114 阅读 · 0 评论 -
c语言中结构体大小的计算
定义结构体中的偏移量结构体中的偏移量是一个成员的实际地址和结构体首地址之间的距离。结构体大小计算结构体大小 会涉及到字节对齐(目的是 让计算机快速读写以空间换取时间)。即,最后一个成员的偏移量加上最后一个成员的大小再加上末尾的填充字节数。结构体内偏移规则1、每个成员的偏移量都必须是当前成员所占内存大小的整数倍如果不是编译器会在成员之间加上填充字节。2、当所有成员大小计算完...转载 2019-08-06 20:46:51 · 343 阅读 · 0 评论 -
小老鼠找毒药问题
有1000瓶毒药,只有一瓶有毒,小白鼠吃了一星期就会死掉,请问,在一星期内找出有毒的药瓶,至少需要多少只老鼠?解:第一步:标号将10只小老鼠标上0-9号,1000瓶毒药换算为2进制数也编上00 0000 0000-11 1110 1000号。第二步:喝水 水瓶编号 -> 老鼠编号标号为0的老鼠喝掉......原创 2019-08-24 14:39:49 · 1105 阅读 · 1 评论