![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C基础
文章平均质量分 65
freudlv
这个作者很懒,什么都没留下…
展开
-
潜在二义性
先说结论在语义层面,潜在的二义性,C++编译器不会报错。只有产生了实际的二义性,C++编译器才报错。编译器:VC6.0gcc version 4.8.4看一段代码:using namespace std;void testFunc(){ cout<<"testFunc void"<<endl; return;}void testFunc(int inputVar = 0){ cout<<"testFunc with default原创 2021-09-12 09:23:49 · 199 阅读 · 0 评论 -
编译原理—笔记
编译原理—笔记翻译程序(Translator Process)翻译程序,是指把某一种语言,翻译成另外一种语言。并不特定于高级语言到低级语言之间的转换,可以是高级语言之间,或者低级语言之间的转换。语言A -》翻译程序 -》语言B编译程序(Compiler Process)编译程序,是翻译程序的一个子集。编译程序把高级语言的源码作为输入,经过翻译,分析,处理优化之后,输出面向机器的语言。机器语言就是目标程序,由计算机执行。高级语言A -》编译程序 -》 机器语言B (编译过程存在中间语言)编译原创 2021-09-12 09:21:55 · 441 阅读 · 0 评论 -
通过汇编看参数调用与返回
通过汇编看参数调用与返回要查看汇编代码,有两个方法:看一段代码:代码编译/运行环境:后记猜想做个试验:要查看汇编代码,有两个方法:gcc -S main.c (只看到汇编码)gcc -g main.c; objdump -dS a.out (可以看到汇编码与源码)参考代码:https://blog.csdn.net/stephenjy/article/details/3978161?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogC原创 2021-09-11 20:29:01 · 944 阅读 · 0 评论 -
C语言--数组/结构体初始化
看一段代码:typedef struct{ char MerchantID[128]; char MobileToken[36]; }Test_Data;void testStructInit(){ Test_Data struData = {1}; int i; for (i = 0 ; i < sizeof(struData); i ++) { printf("%02x ", (char)*(((char *)&struData) + i));原创 2020-06-16 23:44:21 · 1052 阅读 · 0 评论 -
C语言--浮点数的比较
先说结论:浮点数不能直接用"=="进行比较观察代码看如下代码,分析输出:void testDoubleCompare(){ float a = (float)0.1; float b = (float)0.1; float c = (float)0.1; double d = (double)0.1; //同样精度,同样字面大小 if(a == b) printf("a==b\n"); else printf("a!=b\n"); //不同精度,同样字面大小原创 2020-06-11 22:21:53 · 5630 阅读 · 0 评论 -
读书笔记 《C Primer Plus》(5-关于const)
读书笔记 《C Primer Plus》(5-关于const)本篇只要讲述const关键字,该关键字可用于修饰变量,函数参数以及返回值。1、const修饰变量,使其成为常量:const int a = 99; //a为常量,编译前阶段完成替换int const a; //同上const int *p; //p指针指向int常量,指向的值不变int const *p; //同上,等价int * const p = &a; //p指针为常量指针,指向的变量不变const int * co原创 2020-06-08 21:54:18 · 131 阅读 · 0 评论 -
读书笔记 《C Primer Plus》(4-C语言与UNIX)
读书笔记 《C Primer Plus》(4-C语言与UNIX)此文章主要讲C语言的起源。参考:https://www.multicians.org/history.htmlhttps://web.mit.edu/multics-history/故事的开始在1964年,MIT开始了一个预研项目:Multics(Multiplexed Information and Computing Sercive,多路复用信息和计算服务)是大型分时操作系统。该项目有一个宏大的目标,希望可以开发出一个大型主原创 2020-06-07 23:11:24 · 213 阅读 · 0 评论 -
读书笔记 《C Primer Plus》(3-左值 与 右值)
读书笔记 《C Primer Plus》(3-左值 与 右值)术语:数据对象,左值,右值与操作数此处解析对于赋值操作符“=”的左边与右边对象的称谓,以及含义。数据对象(data object)泛指数据存储区,用于保存值。比如,用于保存变量或者数组的数据存储区是一个数据对象。左值(lvalue)指用于标识一个特定的数据对象的名字或者表达式。比如,变量的名字是一个左值。作为一个左值,一定能解析出对象的地址。因此,对象指的是实际的数据存储,而左值是用于识别或者定位那个存储的标识符。可修改的左值原创 2020-06-07 22:11:13 · 241 阅读 · 0 评论 -
读书笔记 《C Primer Plus》(2-指针数组-数组指针-指针函数-函数指针)
读书笔记 《C Primer Plus》(2-指针数组-数组指针-指针函数-函数指针)指针是C语言的灵魂,成也指针,败也指针。在指针的世界里,就有了一些比较拗口的概念:指针数组/数组指针/指针函数/函数指针,本文旨在说清楚这些概念。指针数组场景:在某些情况,有一系列的指针是相关联的,比如有很多常量字符串“AAA”,“BBB”"CCC"等,通过数组保存他们,可以写成:const char pStr[] = {"AAA", "BBB", "CCC"};我们在代码逻辑中,可以动态地选择不同的数组元原创 2020-06-07 12:53:15 · 181 阅读 · 0 评论 -
C语言 -- 变量临时性定义
C语言–临时性定义先看下面一段代码:file1.cint globalInt;int main(){ funcInFile2(); printf("main func[%d]\n", globalInt); return 0;}file2.cint globalInt;int funcInFile2(){ globalInt = 909; printf("here is funcInFile2\n"); return 0;}是否能编译、链接成功?执行效果如何?答原创 2020-06-02 21:32:10 · 1394 阅读 · 0 评论 -
读书笔记 《C Primer Plus》(1-关键字)
读书笔记 《C Primer Plus》(1-关键字)我一直认为,能用好C语言提供的关键字,是把C语言使用好的第一步。下面提纲挈领地汇总一下C语言中的关键字,力求面面俱到。类型相关数据相关的关键字包括11个:字符:char(一个char就是一个byte,一般8位)整数:short,int,long,unsigned,signed.(short,int至少16位,long 至少32位,...原创 2020-05-07 01:07:51 · 274 阅读 · 0 评论 -
读书笔记 《C Primer Plus》(0-概述)
读书笔记 《C Primer Plus》(0-概述)前言使用C语言已经好多年了,在大学的时候开始使用C语言进行课程试验设计到现在已经超过十年。重新看C语言的书,是因为我在想:这么多年使用C语言后,重新系统地看语言的规则与用法,是否会有新的心得。因此这个系列的文章,不是事无巨细地记录C语言的方方面面,而是根据个人的经验,记录之前所忽略的,或者一直没有清晰认识的点。起源C语言的历史比我想象...原创 2020-04-16 22:55:45 · 254 阅读 · 0 评论 -
WIN7下VC6.0无法使用打开文件功能(Unable to register this add-in because its DLLRegisterServer return an error)
原文地址:http://blog.csdn.net/makenothing/article/details/8677682话说自己遇到这个问题已经很久了,因为之前都是做的小项目,大不了自己重新新建文件,然后把无法导入的代码复制进去,但是最近接触项目较大,如果还是按照以前的老方法,估计我的有生之年是做不完了,于是乎在网上找了很多方法,大都是相互转载、拷贝,甚至自己没有实践过。很不负责转载 2016-06-08 14:41:00 · 1859 阅读 · 0 评论 -
VC6 && VS2010 环境变量
上一篇的文章提到,编译 OPENSSL 需要安装 VS2005 以上,因为用到 nmake, ml.exe, rc.exe等工具,都是VS系列带有的。那么就涉及到环境变量这个东西,因为要知道这些工具的位置。我电脑一直安装有VC6.0,经典而轻巧的IDE,我个人是情有独钟。但是,为了 OPENSSL,我就必须安装 VS2010,同时,我又并不想删除VC6.0。安装了 VS2010后,我发原创 2016-01-29 10:33:20 · 2339 阅读 · 0 评论 -
问题汇总 -- 系统,环境类
1. IAR程序下载后,一切正常,但无法启动。 --- 全局变量过大。原创 2013-09-12 11:17:14 · 1154 阅读 · 0 评论 -
IAR 目标文件内存分配
一直都对IAR编译出来的文件,在CPU开始执行该文件的时候,代码数据,代码里面的常量,全局变量,局部变量怎么分配在机器上不明白。看了一些资料,得到下面结论。如果发现有问题,希望留下宝贵的意见。由IAR编译出来的文件,从MAP文件看,大致可以分为:代码段(readonly code memory),常量段(readonly data memory),全局段(readwrite data me原创 2013-11-13 17:12:07 · 5308 阅读 · 0 评论 -
深入理解指针函数
1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。转载 2012-04-28 00:13:53 · 1108 阅读 · 0 评论 -
彻底搞定C指针-函数名与函数指针
函数名与函数指针一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){ MyFun(10); //这里是调用MyFun(10);函数 return转载 2012-04-28 00:17:47 · 1159 阅读 · 4 评论