C语言进阶浅析
文章平均质量分 69
火焰山大白菜
事物的难度远远低于对事物的恐惧!
展开
-
C语言中enum,sizeof,typedef分析
--事物的难度远远低于对事物的恐惧! 这节我们来分析下enum,sizeof,typedef三个关键字。 enum关键字: -enum是C语言中的一种自定义类型 -enum值是可以根据需要自定义的整型值 -第一个定义的enum值默认为0 -默认情况下的enum值是在前一个定义值的基础上加1 ...原创 2018-04-19 22:43:24 · 637 阅读 · 0 评论 -
C语言中注释符号
--事物的难度远远低于对事物的恐惧! 这个小节,我们来聊下注释,很多人会觉得,注释很简单,没必要讲什么,真的吗? 首先来看看下边的代码,有问题吗?请自行上机编译一下。#include <stdio.h>int main(){ int/*...*/i; char* s = "abcdefgh //hijklmn"; ...原创 2018-04-19 23:14:33 · 1566 阅读 · 0 评论 -
C语言中字符串典型问题分析
--事物的难度远远低于对事物的恐惧! 这章我们主要来分析几个典型的字符串问题,也是面试中比较常见的题。 第一题、如下代码执行后输出什么?#include <stdio.h>#include <string.h>int main(){ #define STR "Hello, \0World\0" char* sr...原创 2018-05-01 16:50:51 · 2155 阅读 · 1 评论 -
C语言中接续符和转义符
--事物的难度远远低于对事物的恐惧! 本篇章来分析下C语言中的接续符和转义符,对于接续符,首先来看一段代码:#inclu\de <std\io.h>int ma\in(){ prin\tf("Hello D.T.\n"); retu\rn 0;} prin\tf("Hello D.T.\n"); retu\rn 0;}对于这段代码,你觉...原创 2018-04-20 23:32:41 · 376 阅读 · 0 评论 -
C语言中单引号和双引号
--事物的难度远远低于对事物的恐惧! C语言中的单引号用来表示字符字面量C语言中的双引号用来表示字符串字面量例如: 'a'表示字符字面量,占1个字节,'a' + 1表示 'a'的ASCII码加1,结果为'b' "a"表示字符串字面量,占两个字节,"a" + 1表示指针运算,结果指向"a"的结束符'\0'来看一段下边的代码:#include <std...原创 2018-04-21 00:25:39 · 1918 阅读 · 0 评论 -
C语言中逻辑运算符的分析
--事物的难度远远低于对事物的恐惧! 这一章我们来谈一谈逻辑运算符,也许很多人都会觉得逻辑运算符比较简单,到底还有没有必要花一个单独的篇章来讲解,那么我们首先来看一段代码,结果会是什么?#include <stdio.h>int main(){ int i = 0; int j = 0; int k = 0; ++i ||...原创 2018-04-21 09:16:36 · 709 阅读 · 0 评论 -
C语言中位运算符分析
--事物的难度远远低于对事物的恐惧! 上一章节我们分析了逻辑运算符 || && !,那么这章我们来分析下位运算符,C语言中的位运算符直接对bit位进行操作,其效率最高,而在C语言中常见的位运算符如下: 其中左移和右移有一下几个注意点: -左移操作数必须为整数类型 -char和short被隐式转换为int后进行移位操作 ...原创 2018-04-21 10:04:23 · 324 阅读 · 0 评论 -
C语言中++和--操作符的分析
--事物的难度远远低于对事物的恐惧! 这章来谈一谈也许++和--操作符,也许很多人都很熟悉这两个操作符,其实 ++ 和 -- 操作符就对应两条汇编指令: -前置时 -变量自增(减)1 -取变量值 -后置时 -取变量值 -变量自增(减)1那么...原创 2018-04-21 10:39:07 · 490 阅读 · 0 评论 -
C语言中三目运算符和逗号表达式
--事物的难度远远低于对事物的恐惧! 前几章节分析了逻辑运算符、位运算符和 ++ --运算符,那么这个章节,我们来分析下三目运算符和逗号表达式。 C语言中的三目运算符表达式格式为:a ? b : c ,其规则为: -当a的值为真时,返回b的值,否则返回C的值来看看下边这段代码:#include <stdio.h>int main(){...原创 2018-04-21 12:08:59 · 2710 阅读 · 0 评论 -
C语言中编译过程简介
--事物的难度远远低于对事物的恐惧! 本章节我们来聊一聊编译过程,我们写代码通常会用现成的集成开发环境,比如vs2010等,写完后一键编译,就能获取我们想要的可执行文件,那么在这一键编译的过程中,发生了什么?编译是个怎样的过程?要想了解这个过程,我们首先来了解下编译器。 编译器大概可由如下几个部分组成:由图我们可以得知,编译器由 预处理器、编译器、汇编器、链接器组成,...原创 2018-04-21 16:29:13 · 414 阅读 · 0 评论 -
C语言中链接过程简介
--事物的难度远远低于对事物的恐惧! 在上节,我们分析了编译过程,编译完成后得到目标文件,而此时的目标文件并不能马上执行,还需要最后一步:链接。 首先来思考一个问题:工程中的每个C语言源文件被编译后生成的目标文件,这些目标文件如何生成最终的可执行程序?这就需要这节我们将要分析链接器。 链接器: 链接器的主要作用是把各个模块之间相互引用的部分处理好,使得...原创 2018-04-21 17:05:26 · 1167 阅读 · 0 评论 -
C语言中数组指针和指针数组
--事物的难度远远低于对事物的恐惧! 有些天没更新内容了,今天我们就来说说数组指针和指针数组,可能很多人对这两个概念比较混淆,其实也比较简单,首先我们来分析下它们的名称: 数组指针:首先它是指针,然后指向数组 指针数组:首先它是数组,然后数组中的元素是指针 为了比较好的理解上边两句话,我们首先要来了解一下数组类型: -C语言中的数组有自己特...原创 2018-05-06 11:07:06 · 319 阅读 · 0 评论 -
C语言中条件编译使用分析
--事物的难度远远低于对事物的恐惧! 最近出差较多,没什么时间记录博客笔记,刚好乘五一假期好好写一点。今天我们来看看C语言条件编译使用分析。在C语言中,我们很熟悉if...else...这样的条件语句,而我们这章所说的条件编译指令#if...#else...(当然条件编译指令还有#ifndef、#ifdef等等)很类似if...else...条件语句,那么他们二者有什么区别?我们先来...原创 2018-04-29 10:18:40 · 341 阅读 · 0 评论 -
C语言中#error与#line使用分析
--事物的难度远远低于对事物的恐惧! 这个篇章我们来聊聊#error 和#line两个指令。 #error 用于给程序员自定义特有的编译错误消息,用法为:#error message (注意:message不需要双引号) 示例: #error this is a error 类似的还有#warning,用于生成一个编译警告下边来看看#error的具体用...原创 2018-04-29 10:56:27 · 905 阅读 · 0 评论 -
C语言中#pragma使用分析
--事物的难度远远低于对事物的恐惧! 直接进主题吧,今天来分析下#pragma指示字,该指示字是C语言留给编译器处理的。 -#pragma用于指示编译器完成一些特定的动作 -#pragma所定义的很多指示字是编译器特有的 -#pragma在不同的编译器间是不可移植的 -预处理器将忽略它不认识的#pragma指令 -不同的编...原创 2018-04-29 16:07:51 · 3982 阅读 · 0 评论 -
C语言中struct与union分析
--事物的难度远远低于对事物的恐惧! 大家好,今天来看看C语言中的struct与union,我们都知道,C语言中的struct可以看作变量的集合。那么首先来抛出一个问题:空结构体所占的内存空间为多大? 答案是不同的编译器结果不同,在gcc中,空结构体占0个字节;而在vs2010中直接编译不过。结构体与柔性数组 -柔性数组即数组的大小待定的数组 -C语...原创 2018-04-19 21:57:58 · 2542 阅读 · 0 评论 -
C语言中的字符串
--事物的难度远远低于对事物的恐惧! 这篇我们开始来谈谈C语言中的字符串,首先来看看字符串是个 什么东西: -字符串是有序字符的集合 -字符串是程序中的基本元素之一 -C语言中没有字符串的概念 -C语言中通过特殊的字符数组模拟字符串 -C语言中字符串是以 '\0' 结尾的字符数组...原创 2018-05-01 12:25:18 · 374 阅读 · 0 评论 -
C语言中基本数据类型
--事物的难度远远低于对事物的恐惧! 好了,昨天把博客目录框架已经搭建好了,今天开始不定期更新各章节内容,坚持就是胜利! 今天来聊聊C语言中的基本数据类型,学过一点C的朋友就肯定知道,C语言中的基本数据类型就是int、char、float、double等这些标识符,使用也很简单,直接int value = 10,这样就定义了一个值为10的int型value变量。一、那么...原创 2018-04-13 16:19:14 · 623 阅读 · 0 评论 -
C语言中有符号与无符号
--事物的难度远远低于对事物的恐惧! 经过养成记1,已经有一个很好的开端,但革命尚未成功,坚持就是胜利!现在我们来分析下C语言中的有符号数与无符号数。我们知道,计算机只能识别二进制0和1,那么我们在程序中写的-12,计算机该怎么去识别这个"-"号?计算机怎么知道我们写的数,是正数还是负数?现在就一起来揭开这层面纱! 其实前辈大佬们早就对此作了规定了:把数据类型的最高位作为标...原创 2018-04-13 18:04:42 · 9467 阅读 · 8 评论 -
C语言中浮点数的秘密
--事物的难度远远低于对事物的恐惧! 通过上一章节对“有符号数与无符号数”的学习,大家知道,有符号数在计算机中以补码的形式存储,无符号数以原码的形式存储。那么浮点数在内存中又是以什么样的方式存储?有什么不为人知的特性?本章节,就来剖一剖浮点数这个家伙! 首先我们通过一张图来展示浮点数在内存中的存储方式 从图中可以看到,浮点数存储分为三段:符号位、指数、...原创 2018-04-13 22:15:20 · 8023 阅读 · 3 评论 -
C语言中类型转换
--事物的难度远远低于对事物的恐惧! 在本章节,我们来聊聊C语言中的类型转换,我们知道,C语言中有int、char等不同的数据类型,他们在内存中的表示方式也不一样,那么在这里提出的问题是:不同的数据类型间,可以相互转换吗?假如可以,转换过程会发生什么我们所不知道的事?针对这个问题,我们一起来聊聊。 开门见山:C语言中的数据可以进行类型转换!类型转换又分为强制类...原创 2018-04-13 23:27:45 · 222 阅读 · 0 评论 -
C语言中变量属性
--事物的难度远远低于对事物的恐惧! 这章来聊聊变量的属性,玩过游戏的朋友都知道,游戏里各个角色都有各自特定的属性,才有了各个角色的功力不同,这个只能打小妖而那个却能战大怪,这就因为它们具有不同的属性。 而在C语言中,变量也可以有自己的属性,属性不同,变量的在程序中具有的特性也不同。那么如何给变量加上自己的属性?很简单:在定义变量的时候加上"属性"关键字,这个...原创 2018-04-14 12:00:42 · 560 阅读 · 0 评论 -
C语言中宏定义与使用分析
--事物的难度远远低于对事物的恐惧! 这个章节我们来谈一谈C语言中的宏定义与使用分析,相信每个学过C的都知道,在C中,宏具有如下三个特性: -#define是预处理器处理的单元实体之一 -#define定义的宏可以出现在 程序的任意位置 -#define定义之后的代码都可以使用这个宏 而在C语言中,我们常常用#define来定义宏常量,#defin...原创 2018-04-22 10:51:46 · 795 阅读 · 0 评论 -
C语言中分支语句
--事物的难度远远低于对事物的恐惧! 今天来聊一聊分支语句,可能很多人都比较熟悉,开门见山吧!首先来看看if语句: -if语句用于根据条件选择执行语句 -else语句不能独立存在并且总是与他最近的if相匹配 -else语句后可以连接其他的if语句 if语句中零值比较的注意点: -bool类型的变量应该直...原创 2018-04-18 21:48:42 · 360 阅读 · 0 评论 -
C语言中循环语句
--事物的难度远远低于对事物的恐惧! 上一节说了条件分支语句,那么这节我们来聊聊循环语句,但凡学过一些C语言的朋友,都会了解循环语句,我们在这一节来聊聊循环语句间2细微的差别。 先来回忆下循环语句的基本工作方式 -通过条件表达式判定是否执行循环体 -条件表达式遵循if语句表达式的原则 do...while,while,for的区别...原创 2018-04-18 22:44:24 · 4857 阅读 · 0 评论 -
C语言中goto与void分析
--事物的难度远远低于对事物的恐惧!这节我们来分析下goto与void两个关键字。首先,来给goto直接打个标记:项目中禁用goto关键字!为什么?因为goto语句能无条件的跳到目标位置,直接破坏了程序的结构化特性!忘记goto吧!重点来讨论下void关键字:void修饰函数的返回值和参数,表示"无" -如果函数没有返回值,那么应该将其声明为void -如果...原创 2018-04-18 23:29:11 · 355 阅读 · 0 评论 -
C语言中const与volatile分析
--事物的难度远远低于对事物的恐惧! 今天来分析下const与volatile两个关键字,好了,下边直接进入主题: const只读变量: -const修饰的变量是只读的,本质还是变量 -const修饰的局部变量在栈上分配空间 -const修饰的全局变量在全局数据区分配空间 -const只在编译期有用,在...原创 2018-04-19 07:28:54 · 562 阅读 · 0 评论 -
C语言中指针的本质分析
--事物的难度远远低于对事物的恐惧! 这个章节,我们来说说令很多人畏怯的指针,首先我们来回顾一下以前我们所说的变量,我们知道,程序中的变量只是一段存储空间的别名,那么这里的问题就是:是不是必须通过这个变量,才能使用这段存储空间? 对于上边提出的问题,我们首先来看一段代码,大家先想想执行后输出的结果是什么:#include <stdio.h>int mai...原创 2018-04-30 17:37:11 · 383 阅读 · 0 评论 -
C语言中数组的本质分析
--事物的难度远远低于对事物的恐惧! 这个篇章我们来聊一聊数组,数组其实就是相同的变量的有序集合。具体来可以参考下图: 从上图可以看到,数组是在一片连续的内存空间中存储元素,并且数组元素的个数可以显示或隐式指定 - int a[5] = {1,2}; //显示指定数组元素为5,未初始化的元素默认为0,即a[2]~a[4]的值为0 ...原创 2018-04-30 23:44:24 · 3030 阅读 · 0 评论 -
C语言中指针和数组分析(上)
--事物的难度远远低于对事物的恐惧! 这章我们来分析下指针和数组,在前两章我们谈了数组和指针,我们知道: 数组的本质: -数组是一段连续的内存空间 -数组的空间大小为sizeof(array_type) * array_size -数组名可看做指向数组第一个元素的常量指针 那么我们来看一个问题:对于一个数组 int...原创 2018-05-01 10:32:23 · 171 阅读 · 0 评论 -
C语言中指针和数组分析(下)
--事物的难度远远低于对事物的恐惧! 上一篇我们已经对指针和数组作了简单的分析,那么这一篇我们继续来对他们做个详细的分析,首先来提出一个问题: 数组名可以当做常量指针使用,那指针是否也可以当做数组名来使用呢?为了说明这个问题,我们先来看看数组的两种访问方式,对于数组int array[5] = {0};访问方式有: -下标形式: array[1] = 2;...原创 2018-05-01 11:35:17 · 172 阅读 · 0 评论 -
C语言中#和##操作符分析
--事物的难度远远低于对事物的恐惧! 这个篇章我们来谈一谈#和##操作符,可能很多人都没注意这两个操作符,然而这两个操作符,往往能给我们开发提供很大的便利。 #运算符: -#运算符用于在预处理期将宏参数转换为字符串 -#的转换作用是在预处理期完成的,因此只在宏定义中有效 -编译器不知道#的转换作用 用法如下...原创 2018-04-29 17:03:20 · 503 阅读 · 0 评论