C语言
时光漫走
这个作者很懒,什么都没留下…
展开
-
Segmentation fault (core dumped)
结构体未初始化出现段错误Segmentation fault (core dumped)uart_buf = (uartBuf_typeDef *)malloc(sizeof(uartBuf_typeDef));//memset(uart_buf, 0, sizeof(uartBuf_typeDef));init_queue(&uart_buf->queue);...原创 2019-12-10 10:14:57 · 274 阅读 · 0 评论 -
unsigned short A = 10; printf("~A = %u\n", ~A);
unsigned short A = 10;printf("~A = %u\n", ~A); char c=128; printf("c=%d\n",c); 第一题,~A=0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-12原创 2017-10-06 00:48:12 · 2458 阅读 · 1 评论 -
volatile的详细用法
volatile 易变、易失的一个定义为volatile的变量是说这变量可能会被意想不到地改变。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。嵌入式编程中经常用到 volatile这个关键字,在网上查了下他的用法可以归结为以下两点: 一:告诉compiler不能做任何优化 比如要往某一地址送两指令: i原创 2017-10-05 20:20:18 · 300 阅读 · 0 评论 -
系统32位指针变量为4字节系统16位指针变量2个字节
定义 int **a[3][4], 则变量占有的内存空间为:16位系统24.32位系统中是48.PS:公式:3*4*sizeof(int **)原创 2017-10-05 18:48:58 · 1651 阅读 · 0 评论 -
堆和栈的深入详细理解
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2017-10-04 13:59:37 · 2883 阅读 · 0 评论 -
gdb的基础详细用法
GDB常用命令运行run(简写r): 运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。 continue(简写c):继续执行,到下一个断点处(或运行结束) next(简写n): 单步跟踪程序,当遇到函数调用时,直接调用,不进入此函数体; step(简写s):单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的 until:运行程原创 2017-10-04 11:52:43 · 408 阅读 · 0 评论 -
static和extern对函数的作用
外部函数:定义的函数能被本文件和其他文件访问,默认情况下所有函数为外部函数1>默认情况下所有函数都是外部函数2>不允许有同名的外部函数内部函数:定义函数只能被文本文件访问,其他文件不能访问1>允许不同文件中有同名的内部函数static对函数作用1 定义一个内部函数2 声明一个内部函数extern对函数的作用1 完整的定义一个外部函数2 完整的申明一个外部原创 2017-10-02 15:55:55 · 1290 阅读 · 0 评论 -
算法题:求最后一个单词长度
题目:对于字符数组,求最后一个单词的长度。样例如下:输入:s = "Hello World"输出:5#include #include fun(char s[],int *num);fun(char s[],int *num){ int i; *num=str原创 2017-10-02 13:10:02 · 348 阅读 · 0 评论 -
typedef enum 和enum详细用法
枚举(enum)通过一种简单的途径,把一串名字与一串整形值联系在一起。可以代替#define声明 枚举一般形式: enum 可选标签{ 内容.....}可选定义变量定义; 其中“”内容.....”是一些标识符的列表,可能有一些整型值赋给它们。 enum ASN{MON=7, TUE, WED=10, THU, FR原创 2017-08-23 19:39:36 · 134455 阅读 · 11 评论 -
联合(union)的最详细用法
联合(union)的声明和结构与结构体类似,但是本质不同。 联合的所有成员引用的是内存中的相同位置。当你想在不同时刻把不同的东西存储于同一位置时,就可以使用联合。 构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用,全分配。 而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”;但优点是内原创 2017-08-23 10:43:07 · 35417 阅读 · 1 评论