
C语言概念
Dawn_sf
这个作者很懒,什么都没留下…
展开
-
C语言中的操作符优先级
C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用。下面是来自The C Programming Language 2th的总结。OperatorsAssociativity(结合性)1. () [] -> . 左->右 2. ! ~ ++ -- + - *原创 2017-02-15 22:42:12 · 962 阅读 · 0 评论 -
C语言逗号运算符和逗号表达式
c语言中逗号运算符和逗号表达式 C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如: 3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号转载 2017-02-07 00:35:20 · 1637 阅读 · 0 评论 -
C语言—atoi函数的介绍以及实现
atoi函数的用法我们在学习C语言中时常会使用到atoi函数,以及他类似的函数比如itoa函数等等,今天重点谈谈atoi函数。函数原型:int atoi(const char* nptr);函数的用法:参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。...原创 2017-02-18 17:20:33 · 2890 阅读 · 0 评论 -
C语言中realloc,malloc,calloc区别
realloc,malloc,calloc区别三个函数的申明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(size_t numElements, size_t sizeOfElement); 都在stdlib.h函数库内它们的返原创 2017-02-06 00:46:05 · 742 阅读 · 0 评论 -
C/C++ extern关键字的详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数转载 2017-01-21 18:44:44 · 583 阅读 · 0 评论 -
c语言—常见BUG
1. void Test(){ char pcArray[10]; strncpy(pcArray, "hello", 5); printf("%s\n", pcArrat); return;}这段代码首先要知道,strncpy的用法,以及它的参数,char *strncpy(char *dest, const char *src, int n),把src所指向的字符串中以原创 2017-02-23 10:37:51 · 5125 阅读 · 0 评论 -
C语言 — 内存结构
内存分配方式 :内存分配方式有三种:[1]从静态存储区域存储内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。原创 2017-01-15 22:47:50 · 1532 阅读 · 0 评论 -
C语言 — 整形提升
整形提升什么是整形提升?在K&R和C89的早期实现中,基于short和char的算术运算陷入两难的困境,因为可能会产生两种不同的结果。因此,在C99中很明确地定义了整型提升的规则.如果int能够表示原始类型中的所有数值,那么这个数值就被转成int型,否则,它被转成unsigned int型。这种规则被称原创 2017-06-11 14:09:00 · 7107 阅读 · 3 评论 -
C语言结构体中的内存对齐以及位域和位域的应用
1,结构体中的内存对齐 我们常常会发现,当我定义了一个结构体但是siziof之后却发现结果常常大于我原来定义的在结构体里面所有类型的和,然后我查询了许多的资料,终于发现了内存对齐问题。 许多计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(al原创 2017-01-15 08:58:35 · 1577 阅读 · 0 评论 -
C++语言— 引用与指针的区别
引用的意义和使用刚刚开始接触C++,当然第一个学到的知识点就是引用,那么什么是引用呢?引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。定义的格式为: 类型 &引用变量名 = 已定义过的变量名;引用的特点:一个变量可取多个别名。引用必须初始化。引用只能在初始化的时候引用一次,不能改变为再引用其他的变量。现原创 2017-02-26 19:36:49 · 1002 阅读 · 1 评论 -
C语言const的用法(初级)
const的用法const的用法我觉得对于一个以后想着做一个优秀的程序员来说,这是必须熟练掌握的技能。因为网上有好多的文章介绍它的写的非常好,有的我就直接拿过来了~,现在我们来看看他的用法。const 要求他所修饰的对象为常量,不可被改变,不可被赋值,不可作为左值.1、函数体内修饰局部变量例:void func(){const int a=0;}转载 2017-01-23 13:40:32 · 1132 阅读 · 0 评论 -
C语言—链表面试题之带环问题的总结
链表带环问题昨天在网上看到一个挺有趣的东西,链表带环问题,感觉很烧脑,但是可以锻炼我们的思想,我就闲来无事写一个博客总结一下。所谓链表带环其实也就是让他最后一个结点的next成员指向自己第一个元素的,好开始!首先我们创建一个带环的链表。这个自己写一个链表的后插函数,然后找到最后一个成员的next成员的地址,将它的内容改为你的头结点的地址,这样的一个环就成功了。原创 2017-02-25 11:17:47 · 1083 阅读 · 0 评论 -
C语言总结 — 知识点导论图
C语言知识点导论图上图相应的知识点我大多都会有一篇关于此知识点介绍更多的博客,如果概念不是很清楚,可以从C语言专栏进去寻找相应博客. 还有由于上转图片有限制所以字体来说,不是很清楚,如果需要原图的话留下邮箱 我给大家发送~ 如果有哪些遗漏的知识点还请大家不啬赐教,共同进步~原创 2017-12-29 21:07:10 · 2943 阅读 · 72 评论 -
数组和指针相互之间的联系与调用
数组和指针是两个概念,但是他们双方都与彼此有一定的联系,这一点大家都知道吧可以通过指针来找到数组的位置。==》一维数组和指针的关系首先写一个小程序。地址是骗不了人的,结果我们发现他们的地址都是一样的,说明他们指的都是同一个地方,好多人可能没办法理解2[a]是什么东西,其实这个和a[2]是一模一样的。最主要的是我们看到了, a[2]和*(a+3)是一样的。所以呢指原创 2017-01-18 11:42:35 · 1199 阅读 · 3 评论 -
C语言—理解函数指针以及它的用法
什么是函数指针?指针前面已经写过好多,自以为认识的差不多了,但是今天突然看到一个问题,写一个函数指针,函数指针就是一个指向函数首地址的指针,接下来写几个指针:写一个函数指针写一个函数指针数组写一个指向函数指针数组的指针看到这三个是不是觉得挺绕~==》定义函数指针举个例子看以下代码# define _原创 2017-02-13 16:59:01 · 23792 阅读 · 2 评论 -
C/C++ — 函数栈帧的简单见解
函数的栈帧我们在进行编写程序的时候无论是定义变量,还是调用函数,甚至输出一句话都要用到内存空间,如果说程序是鱼的话,那么内存空间就是大海,没有内存空间什么都没有办法实现,但是程序在内存空间中是什么样子的呢?? 我们可以看出来随着地址的增大 大致分为这几个区域:代码区,静态全局区,堆区,共享区,栈区。但是今天的主题只要是栈里面的知识。 那么这个标题栈帧是什原创 2016-12-18 15:23:08 · 3147 阅读 · 1 评论 -
C语言中关于char类型存储的分析 以及signed与unsigned的区别
char类型存储的分析char和signed char大家对char类型相信一定不会陌生的ANSI C 提供了3种字符类型,分别是char、signed char、unsigned charchar相当于signed char或者unsigned char,但是这取决于编译器!这三种字符类型都是按照1个字节存储的,可以保存256个不同的值。signe原创 2017-01-16 15:50:19 · 5113 阅读 · 5 评论 -
数组和指针的比较和关系以及区别
1.指针和数组的内存布局我最近在网上看到好多人都在说数组就是指针,但是我可不这样认为,我觉得数组就是数组,指针就是指针。它两个可能有关系,但是呢他两个之间一定不会划上等号。首先从下面这些点谈谈==》指针的内存布局 举个例子 *p任何数据都将被当作地址来处理。我们可以简单的这么理解:一个基本的数我们把p 称为指针变量 ,p 里存储的内存地址处的内存称为 p 所指向的内存。指针变量p里存储的据类型(包原创 2017-01-17 22:08:24 · 1027 阅读 · 0 评论 -
关于C语言中 rand()函数的一些个人积累和见解z
一个新入门的小白对srand 和 rand的一些了解原创 2016-11-18 23:52:08 · 808 阅读 · 0 评论 -
对于一些经典库函数的源代码认识以及分析1.
1.strcpy函数的实现#inlcudechar *strcpy(char *dst,const char *src){assert((dst!=NULL)&&(src!=NULL));char *tmp= dst;while((*dst++= *src++) != '0\'{}return tmp;}原创 2016-11-28 23:48:42 · 619 阅读 · 0 评论 -
C语言中的文件流
所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3、mp4、txt、bmp、jpg、exe、rmvb等等。这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中。那么,为什么这里面又有这么多种格式的文件呢?原因很简单,它们各有各的用途,区分就在于这些文件里面存放的数据集合所遵循的存储规则不一样。举个例子比如bmp图片文件,为什么他能够表示一张图片,因为它有固转载 2017-02-15 16:24:20 · 4713 阅读 · 2 评论 -
C语言—编译环境
1.环境在ANSI C的任何一种实现中,存在两种不同的环境。第一种是翻译环境,这里源代码被转换成可执行的机器指令。第二种就是执行环境,它用于实际执行代码。标准说明,这两种的环境不必位于同一台机器上。==》翻译翻译阶段的几个步骤: 1. 组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。2. 每个原创 2017-02-12 20:42:55 · 2508 阅读 · 0 评论 -
C语言中mallloc()和free()函数的使用和分析
1.malloc()函数的使用和分析void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。那么malloc实现的原理是什么呢。ChorusOS通过哈希表管理malloc分配的内存段,哈希键值key共30个,从0到29。每个键值管理一份内存转载 2017-01-24 15:15:23 · 3555 阅读 · 0 评论 -
如何写出一个好的程序
我们以memmove函数作为例子,来看我们如何一步步精简和优化你的代码。写之前我们应该知道memmove这个函数有什么用?他就是一个按字节的拷贝函数,把目标的内容按字节拷贝到你指定的地址,他和strcpy不同的地方就是他是按字节拷贝,他可以拷贝任意的类型的。现在我们考虑一下,开始第一种方案,只完成拷贝功能NO'1void MyMemMove(char *dst,ch原创 2017-01-23 15:05:52 · 2933 阅读 · 0 评论 -
C语言中assert函数的用法
断言(ASSERT)的用法 我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句:if(假设成立){ 程序正常运行;}e转载 2017-01-23 14:47:45 · 3608 阅读 · 0 评论 -
用C语言实现 坐标管理系统(类似于学生管理系统的功能)
这个程序的许多地方都可以照搬过去,主要就是链表的创建,插入,删除,排序。#include#include#include#include#include#includetypedef struct point{ int nums; char *name; int grade; struct point *next;}point;void intipointlink(原创 2017-01-21 13:47:38 · 826 阅读 · 0 评论 -
c语言--链表的删除
链表删除的基本思想原创 2017-01-21 11:57:26 · 2836 阅读 · 0 评论 -
C语言—链表的排序
链表的排序我们已经知道了,链表的查找的原理和做法,现在删除的基本思想相信你可以很快的反应出许多人认为链表排序是这里面最难得,因为大家脑海里面对于前面插入,删除的方法已经熟悉了,可能最容易想到的就是从结点和结点之间的联系入手,确实最常用的就是把链表的“链”打断再重新排,再有就是重新创建一个一模一样的链表,然后把排序出来的从大到小依次写进去,但是这些方法都是从外边的大结构上入手原创 2017-01-21 12:20:11 · 5656 阅读 · 2 评论 -
C语言—链表的插入
链表插入的基本思想 上一个博客我们已经了解,链表的的查找,那么插入应该挺好理解的吧,我们已经可以定位到它的前驱结点, 然后改变它的前驱结点的值,让它指向需要插入的结构体,然后把原始的前驱结点的NEXT赋值给你新插入进来 的结构体,然后就完了。。。 对 这就完了。。。 q指针是查找返回的值,p指针是新开辟地址,红色是初始指向,原创 2017-01-20 22:47:31 · 2078 阅读 · 0 评论 -
C语言--链表的销毁
链表销毁的基本思想上次说了链表的构建,现在呢链表的销毁,他要是销毁,必须释放所有成员的内存空间,现在一个问题摆在面前,到底我们是从前往后删,还是从后往前删?如果从后往前删,我们先要用指针指向最后一个结构体的前驱结点的next的值,修改前驱结点的next的值为空,然后用指针释放最后一个结构体的空间,但是这里最后一个结构体的前驱结点的next还得你写程序判断,相对从前往后删原创 2017-01-20 15:54:20 · 11998 阅读 · 1 评论 -
C语言—链表的创建
==》基本的链表创建思想最近在学习结构体,用了一天时间做了一个简易的坐标管理系统,里面涉及有链表的创建,查找,插入,删除,销毁,排序。我打算每一个都写一个博客,首先来说创建链表。很多刚刚接触链表这个名词的时候都无法理解,结构体到底如何一个又一个的联系起来,其实很容易理解的,在每一个链表的末尾添加一个指向下一个头结点的指针,他们不就是如同一个铁链一样联系在一起。首先应该知原创 2017-01-20 14:55:11 · 930 阅读 · 1 评论 -
C语言的关键字说明以及用法
ANSI C一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。他们的样子以及说明:auto :声明自动变量break:跳出当前循环case:开关语句分支char :声明字符型变量或函数返回值类原创 2017-01-18 11:26:03 · 752 阅读 · 0 评论 -
浮点数类型在内存之中的存储方式
常见的浮点数:3.141591E10浮点数家族包括:float、double、long double类型。浮点数表示的范围:float.h中定义浮点数存储的例子:int num =9;float *pFloat = (float *)#printf("num的值为:%d\n",num);printf原创 2017-01-17 11:48:41 · 956 阅读 · 0 评论 -
整型的存储结构以及例题
1==》整形变量:整型有符号整型 无符号整型 数据长度int unsigned [int] 32位short[int] unsignedshort [int] 16位lon原创 2017-01-16 21:39:55 · 730 阅读 · 0 评论 -
c语言中的大小端问题与高低位问题
1.大小端的概念1==》为什么会有大小端? 这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的原创 2017-01-15 23:06:24 · 3472 阅读 · 0 评论 -
string.h头文件中的主要函数简单认识和用法
当我们学习了字符串以后,会有极大的时间和机会接触 string.h 头文件中的这些函数。这里会有几个常用的函数拿出来详细的介绍;首先 strlen函数的简单认识~strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。举个例子原创 2016-12-11 23:39:14 · 1645 阅读 · 0 评论 -
简单了解宏以及宏和函数的区别
1.宏的认识C语言程序中广泛的使用宏定义,采用关键字define进行定义,宏只是一种简单的字符串替换,根据是否带参数分为无参和带参。C语言程序中广泛的使用宏定义,采用关键字define进行定义,宏只是一种简单的字符串替换,根据是否带参数分为无参和带参。C语言程序中广泛的使用宏定义,采用关键字define进行定义原创 2016-12-04 23:41:18 · 1322 阅读 · 2 评论 -
C语言 — 链表面试题复杂链表问题
复杂链表何为复杂链表呢? 这个问题是我在一道面试题上看到的,觉得挺难理解的,所以写一篇博客介绍一下链表本身具有两个或多个指针,当然next指针很有规律的指向下一个结点,但是其他的指针的指向,就有一点混乱了,可以说是没有规律,现在问题来了,你需要复制一个这样的链表,怎么办?讲道理这些题是真的烧脑,首先原创 2017-03-22 18:04:30 · 2083 阅读 · 1 评论