
C语言
文章平均质量分 62
Shemesz
这个作者很懒,什么都没留下…
展开
-
大端字节序和小端字节序
大端字节序和小端字节序1.什么是大小端字节序2.验证大小端字节序1.什么是大小端字节序计算机硬件有两种储存数据的方式:大端字节序(MSB)和 小端字节序(LSB)。小端字节序(LSB)将这样的数据存储在计算机中,地址从地位到高位应该是:78 56 34 12int a=0x12345678一共四个字节的地址,假设从0x1001 ~ 0x1004;那么,对于小端字节序来说系统是这样存储的:由图可以看出,小端字节序的存储规则是:数据的低位存储在地址低位,数据的高位存储在地址高位大端字节序(原创 2021-08-18 00:42:17 · 4729 阅读 · 2 评论 -
collect2:fatal error: ld terminated with signal 11 [Segmentation fault] 问题的解决
- 问题产生 今天gcc编译C文件的时候遇到一个始终无法解决的问题collect2: fatal error: ld terminated with signal 11 [Segmentation fault]- 问题原因 首先我们看到编写程序最眼熟的 [Segmentation fault]系统发送了11号段错误信号终止了编译,再观察ld只是链接文件用的,相当于Windos下的快捷方式,由此我们应该从ld下手解决, 可能是无论百度还是各种查找,都是一些没用的信息,根本确定不了错误根源,原创 2021-07-31 14:52:27 · 6240 阅读 · 3 评论 -
Linux下C程序的内存布局
进程空间内的内存布局 在Linux下,进程内存管理的对象都是虚拟内存,每个进程先天就有0~4个G的各自互不干涉的虚拟内存空间,0 ~3G都是用户空间执行自己代码,高1GB的空间是内核空间执行Linux系统调用的,这里存放在整个内核的代码和所有的内核模块,用户看到和接触到的都是该虚拟地址,并不是实际的物理内存地址。 Linux下一个进程在内存里有三部分的数据,就是“代码段”、“堆栈段”和“数据段“。其实学过汇编语言的人一定知道,一般的CPU都有上述的三种寄存器,以方便操作系统的运行。这三部分是构成一个完整原创 2021-07-15 18:48:49 · 281 阅读 · 0 评论 -
C/C++中的跳转语句:break、continue、goto
(1)break语句作用:用于跳出选择结构或者循环结构break使用的时机:出现在switch条件语句中,作用是终止case并且跳出switch;出现在循环语句中,作用是跳出当前的循环语句;出现在嵌套循环中,作用是跳出最近的内层循环语句;示例1#include <iostream>using namespace std;int main(){ //1.出现在switch语句当中 cout << "请选择难度" << endl; cout &原创 2021-07-09 12:06:52 · 4922 阅读 · 0 评论 -
getopt()和getopt_long函数
命令行参数解析(1)getopt()(2)getopt_long()在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNU C提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。(1)getopt()1. 简介getopt()函数就是用来解析命令行参数的,包含在<unistd.h>头文件当中。2.定义int getopt(int argc, char * const argv[], con原创 2021-05-17 01:40:10 · 739 阅读 · 0 评论 -
extern关键字的作用
extern关键字(1)变量(2)函数首先我们了解一下extern的工作原理:简单来说就是,现在当前文件中找有没有全局变量,没有找到,才会去其他文件中查找这个关键字真的比较绕,每次出现,每次容易绕混,到底是声明还是定义?在定义变量的时候,这个extern居然可以被省略(定义时,默认均省略);在声明变量的时候,这个extern必须添加在变量前,所以有时会让你搞不清楚到底是声明还是定义。或者说,变量前有extern不一定就是声明,而变量前无extern就只能是定义。注:定义要为变量分配内存空间;而原创 2021-05-15 16:06:18 · 3301 阅读 · 0 评论 -
const关键字的作用
const关键字1、 修饰变量2、 修饰数组3、 修饰指针4、 修饰函数参数1、 修饰变量C语言中采用const修饰变量,功能是对变量声明为只读特性,并保护变量值以防被修改。举例说明如下:const int i = 5;上面这个例子表明,变量i具有只读特性,不能够被更改;若想对i重新赋值,如i = 10;则是错误的。值得注意的是,定义变量的同时,必须初始化。定义形式也可以写成int const i=5,同样正确。此外,const修饰变量还起到了节约空间的目的,通常编译器并不给普通cons原创 2021-05-15 14:48:07 · 1974 阅读 · 1 评论 -
链表——头插法和尾插法的实现
kkkk原创 2021-01-28 20:48:14 · 172 阅读 · 0 评论 -
指针理解——GetMemory内存问题的四个经典示例
指针理解——关于内存问题四个经典示例第一题void GetMemory(char *p){ p = (char *)malloc(100);}void Test(void){ char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str);} 出现问题:程序崩溃分析原因:调用GetMemory(str)时,函数将str作为实参出传入类型(char *)类型的p中,此时p只是str的临时拷贝,p原创 2021-01-26 17:31:27 · 2200 阅读 · 0 评论