C语言基础
文章平均质量分 57
Andy Pines
你猜啊
展开
-
【C语言数据结构】线性表五:线性表的链式表示和实现(静态链表代码)
一.问题((A-B)U(B-A))静态链表实现*《数据结构》P33* 需要注意的是算法2.14没什么好说的,只是初始化整个结构体数组,算法2.15是在整个备用空间取一个结点当成新链表,算法2.16是把不再使用的节点还到备用链表上*可以看到算法2.17就是主要的算法了,其主要结构就是两个for循环,第一个for循环用于建立集合A的静态链表,第二个for用来输入集合B的元素,在每一趟循...原创 2020-02-06 11:13:42 · 265 阅读 · 0 评论 -
【C语言数据结构】线性表四:线性表的链式表示和实现(静态链表概念)
一.静态链表静态链表的概念:原创 2020-02-05 17:38:07 · 370 阅读 · 0 评论 -
【C语言数据结构】线性表三:线性表的链式表示和实现(概念)
一.线性表的链式表示和概念*在这里需要注意的是顺序表和链表各自的优缺点*头指针和头结点头指针:头结点:二.单链表的插入和删除元素*这里需要注意的是关键点是指针p*这里需要注意的是没有列出双向链表的插入和删除,请看<数据结构>P35-P36status ListInsert_L(LinkList &L, int i, Ee...原创 2020-02-05 11:11:28 · 241 阅读 · 0 评论 -
【C语言数据结构】线性表二:线性表的顺序表示和实现(代码)
顺序表的概念/数据结构部分请见上一节,这里直接贴出书上的算法和代码需要注意的是这里的realloc函数的用法,参考MAN手册就好另外接口只保证了编译通过,请自行写测试用例测试#ifndef __HEADER_H__#define __HEADER_H__ 100#include <stdio.h>#include <stdlib.h>#include ...原创 2020-01-09 23:40:40 · 326 阅读 · 0 评论 -
关于函数声明的思考
最近看<C和指针>第七章函数时对函数声明部分有一些思考, 总结出来1.为什么要有函数声明函数声明的作用就是将函数的有关信息告诉编译器, 好让函数调用时编译器去检查2.函数声明的形式3.一种使用函数原型危险的方法(在gcc下不一定正确)上面回顾了函数声明的作用与方式, 在<C和指针>这一节中有举例说明了一种危险使用函数声明的方式,可能由于编译器...原创 2019-12-21 12:50:15 · 456 阅读 · 0 评论 -
C语言一维数组名究竟是什么
1.问题按照我一贯的理解, 一维数组名==首元素地址==常量,理解马马虎虎,日常使用并没有什么问题直到有一天我在思考一个左值右值的问题时,发现了数组名的不同问题:既然数组名是常量,我们都知道常量不能当左值,所以我认为int a[5];a=5;和5=5;应该有相同的报错,因为错误原因都相同:常量不能作为左值, 但是实际是这样吗?看看下面的结果, 是不是很困惑, 报错不应该都是赋值运算左操...原创 2019-12-04 23:24:42 · 1793 阅读 · 0 评论 -
对C语言指针强转的理解
1.什么是表达式, 表达式的属性是什么写得好的博客贴在这里:https://blog.csdn.net/astrotycoon/article/details/50857326定义:概括说来表达式是由一系列运算符(operators)和操作数(operands)组成的。这既是表达式的定义,同时也指明了表达式的组成成份。运算符指明了要进行何种运算和操作,而操作数则是运算符操作的对象属性:...原创 2019-11-17 12:35:17 · 331 阅读 · 0 评论 -
C语言define变参__VA_ARGS__及##__VA_ARGS__的使用
最近在代码中看到很多可变参数宏函数中使用了##__VA_ARGS__这种东西, 之前写过一篇博客是说##的用法是在宏定义中把位于它两边的符号连接成一个符号在<C和指针>P283介绍了这样一种用法:这种常见的##用法的结果就是:ADD_TO_SUM(5,25)<=>sum5+=25那么问题是在可变参数宏里面的##又是是什么意思?和不用##又有什么区别呢?我...原创 2019-11-10 11:34:57 · 1063 阅读 · 0 评论 -
C语言中的转移表
最近学习<C和指针>第十三章, 高级指针话题, 看到了转移表, 记录下来1. int (*f[])() 与int* (*f[])()上面这两个声明都是合法的, 其实本质上没有区别int (*f[])()<=>int (*)() f[]: f是一个数组, 数组的元素类型是函数指针, 它所指向的函数的返回值是一个整型值int* (*f[])()<=>...原创 2019-10-13 16:35:16 · 2580 阅读 · 0 评论 -
extern报错:static declaration follows non-static declaration
上一篇博客复习与回顾了extern的用法与知识点,于是参考<C和指针>第三章习题P49的第24题,发现课后答案与我自己在ubuntu上做的实验有冲突,记录下来我把课后答案简化了一下,贴上代码按照<C和指针课后答案>的说法,我的代码第7行与第14行的y分属不同作用域,所以是没有问题的,<C和指针>代码如下:但是实实在在我们在ubuntu上看到了...原创 2019-09-19 22:38:11 · 3429 阅读 · 0 评论 -
C语言extern关键字小总结
最近复习C语言基础,将extern的一些知识点总结下来参考资料是<C和指针>第三章数据博客转:https://blog.csdn.net/qq_27664167/article/details/828598521.作用域/链接属性/存储类型(<C和指针>3.5,3.6,3.7) 作用域:标识符的作用域就是程序中该标识符可以被使用的区域,具体分为代码块作...原创 2019-09-17 23:41:11 · 425 阅读 · 0 评论 -
C语言中"#"和"##"的作用
一般在函数的开头都会有空指针检测部分,这部分一般是宏函数来实现的,最近客户跟我抱怨说空指针都是同一个打印,根本不知道哪个是空指针,于是我想起《C和指针》有这部分的介绍,复习了一番,我自己修改后的宏函数如下:root@ubuntu:/lianxi/lianxi_oj/MACRO# ./a.outnull pointer: p is found!root@ubuntu:/lianxi/lia...原创 2019-06-03 21:59:04 · 1068 阅读 · 0 评论 -
涛哥大讲堂 之 回调函数的作用
1.什么是回调函数简单的说就是:函数指针变量可以作为某个函数的参数, 回调函数就是一个通过函数指针来调用的函数以下是自知乎作者常溪玲的解说:你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回...原创 2018-10-29 23:41:36 · 179 阅读 · 0 评论 -
join一个detached的线程会发生什么?
最近搞一个PVR的问题, 程序总是概率性hang住, 不好调试, 捉摸不透, 看代码时确实有看到程序中存在join一个detached线程的用法, 起初觉得奇怪, 但是打印显示hang住的地方不在这里, 也没多想, 最终邮件求助得知问题就出在这里,join与detach需要干掉一个, 问题解决。到写博客时也没想通为什么join一个detached的线程会导致概率性hang住,自己写了一个小sa...原创 2018-11-29 23:09:26 · 279 阅读 · 0 评论 -
C语言基础:multi-line comment
今天在调试代码时为了偷懒, 直接在有反斜杠的代码前加了行注释//, 结果导致编译不过查下了下资料, 原因如下:在C/C++语言中,在对源文件做预处理的时候,有两条基本原则:1、凡是以//开头的为单行注释2、凡是以\结尾的代表此行尚未结束于是预处理器在处理的时候会先按第二条规则,看每行的末尾的那个字符是不是”\”,是的话,就下一行接到本行。然后把所有以//开头的注释和/* */...原创 2018-11-28 20:45:06 · 1643 阅读 · 0 评论 -
C++/C 对EOF的理解
最近在分析雷神的找NALU程序时,总觉得最后一个NALU长度求得不对,但是跟了一下以及用UE工具看了,雷神的写法都是对的,那么一定是我理解错了。果不其然,我忽略了EOF的问题。知识需要总结,所以利用这个机会总结在此,总结了C++与C对于EOF的一些处理。C++用了istream &get( char &ch)方法,而C用了fgetc方法去读取一个字节自己觉得写得透彻的文章列...原创 2018-12-19 22:24:22 · 3709 阅读 · 0 评论 -
C语言位段学习
最近看到了代码中位段(bit-filed)的问题, 之前在C和指针上看到过, 但是没怎么用到, 现在学习并记录下自己的理解参考的书籍有<C和指针>P209与博客,链接附在下面:https://blog.csdn.net/ygm_linux/article/details/264976451.位段基础具体的概念看书与博客, 谈一下自己的理解:位段类似于结构体, 用stru...原创 2019-04-25 23:43:01 · 525 阅读 · 0 评论 -
【string总结之一】C语言strtol函数
C语言string的几个函数虽然比较简单, 但是还是想总结在这里, 以免每次用到都要去查一下strtol,strstr,strcat/strncat,strcpy/strncpy,strcmp/strncmp1.strtol【头文件与函数原型】:#include <stdlib.h>long int strtol(const char *nptr, char **e...原创 2019-04-27 10:32:39 · 854 阅读 · 0 评论 -
【string总结之三】C语言strcat/strncat
C语言string的几个函数虽然比较简单, 但是还是想总结在这里, 以免每次用到都要去查一下strtol,strstr,strcat/strncat,strcpy/strncpy,strcmp/strncmp1.strcat【头文件与函数原型】#include <string.h>char *strcat(char *dest, const char *src);...原创 2019-04-28 22:45:18 · 346 阅读 · 0 评论 -
【string总结之四】C语言strcmp/strncmp
C语言string的几个函数虽然比较简单, 但是还是想总结在这里, 以免每次用到都要去查一下strtol,strstr,strcat/strncat,strcpy/strncpy,strcmp/strncmp1.strcmp【头文件与函数原型】#include <string.h>int strcmp(const char *s1, const char *s2);...原创 2019-04-30 07:35:53 · 465 阅读 · 0 评论 -
涛哥大讲堂 之 二维数组与二级指针之间的转变
【题目】上周五, 涛哥给我出了一道题:int a[5][10];int **p;如何将a赋值给p(a与p之间如何转换), 使a[x][y] == p[x][y]-------------------------------------------------------------------------------------【分析】二维数组看法:两个一维数组第一...原创 2018-09-09 12:47:06 · 396 阅读 · 0 评论