C语言基础
文章平均质量分 83
Otis_L
做别人做不到的你就会体会到成功,If I Rest,I Rust~
展开
-
程序在内存中分布
contens内存分布图各段说明堆与栈的区别内存分布图各段说明.代码段(.text):也称文本段,存放着程序的机器码和只读数据,可执行命令就是从这里取得。这个段在内存中一般被标记为只读,任何对该区的写操作都会导致段错误(Segmentation Fault)数据段:包括已初始化的数据段(.data)和未初始化的数据(.bss),前者用来存放保存全局和静态的已初始化变量,后者用来保存全局和静态的未初始化变脸。数据段在编译时分配。堆栈段:包括堆和栈空间堆(Heap):用来存储程序运行时分配的变原创 2021-11-30 18:20:53 · 1096 阅读 · 0 评论 -
汇编基础知识
contents汇编语言寄存器内存模型CPU指令ARM汇编与C语言编程汇编语言作为低级语言,直接描述/控制CPU的运行,学习汇编的意义就是为了理解CUP的运行情况已经高级代码的运行步骤汇编语言 来历 最早的时候,编写程序就是手写二进制指令,然后通过各种开关输入计算机,比如要做加法,就按一下加法开关。后来发明了纸袋打孔法,通过在纸袋上打孔,将二进制指令自动输入计算机。 &原创 2021-09-28 18:57:30 · 629 阅读 · 0 评论 -
C语言基础冷知识汇总
!和~的区别~:表示按位取反,1变成0,0变成1。!:表示逻辑取反,false变ture,true变false,在C语言中,逻辑取反的对象只要不是0就表示为真。//示例:!5 = 0~5 (二进制00000101,取反11111010)= -6[~表示按位取反,!表示逻辑否定]所有的不是0的数用!操作后都是0;只有当操作数为0xFFFFFFFF时,使用!和~的结果值才是一样的。* 另外可以注意* 所有正整数的按位取反是其本身+1的负数,所有负整数的按位取反是其本身+1的绝对值* 0的按原创 2021-04-14 18:22:14 · 1108 阅读 · 0 评论 -
C语言基础(string标准库函数及其实现)
1,memchr -->C 库函数 void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。 void *memchr(const char *str,int c,size_t n){ const unsi...原创 2019-03-07 17:57:14 · 1853 阅读 · 0 评论 -
C语言基础(位域)
如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下:struct{ unsigned int widthValidated; unsigned int heightValidated;} status;这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,我们只存储 0 或 1。在这种情况下,C 语言提供了一种更好的利用内存空间的方式。如果您在结构内...原创 2019-03-07 18:29:58 · 330 阅读 · 0 评论 -
C语言基础(typedef)
CtypedefC 语言提供了typedef关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语BYTE:typedef unsigned char BYTE;在这个类型定义之后,标识符 BYTE 可作为类型unsigned char的缩写,例如:BYTE b1, b2;按照惯例,定义时会大写字母,以便提醒用户类型名称是一个象征性的...原创 2019-03-07 18:45:02 · 181 阅读 · 0 评论 -
C语言基础(数组指针与指针数组)
数组指针(也称行指针)定义 int (*p)[n];( )优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该...原创 2019-03-08 12:23:39 · 336 阅读 · 0 评论 -
C语言基础编程题(约瑟夫环:隔二删除)
删数(约瑟夫环):每隔两个数循环删除数组元素,到末尾时循环至开头继续,直至最后一个元素,返回其数组下标。//分析:本题的关键是如何删除,暴力求解法,一个个删除,并将自后的元素全部往前移,时间复杂度高;另一种是遍历过程跳过需要删除的数;另一个关键是如何在移动过程中保持数组的原始下标,因为数据本身可能是无序的,下标和数据可能没有关系,并且还可能重复。性能分析:循环队列法由于每次扫描的数都是...转载 2019-03-13 10:34:36 · 694 阅读 · 0 评论 -
数据结构基础(链表)
链表的定义:typedef int DataType;typedef struct ListNode{ Datatype data; struct ListNode* next;}ListNode;递归实现链表的逆序打印void Reverse(ListNode *pList)//递归实现逆序打印{ if(pLis...原创 2019-03-21 19:09:48 · 290 阅读 · 0 评论