![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C-C++
上吧皮卡丘
业精于勤荒于嬉,行成于思毁于随
展开
-
C&&C++&&VB&&java
研究问题:学的越多越容易打岔,这时候有必要对比一下细微差别! 以下是C/C++/visual basic/java等语法差别!!要点:C/C++/java语言严格区分大小写,VB不区分大小写C语言中没有特定的字符串类型,而C++/java中有string字符串数据类型。 java中nextLine()即输入字符串,而next()是输入字符(不包括空格,table……)C系统对指针变量赋原创 2018-03-26 14:55:17 · 664 阅读 · 0 评论 -
常用库函数及关键字
32个常用关键字 C语言32个关键字 第一类:数据类型关键字 A基本数据类型(5个) void 声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char 字符型类型数据,属于整型数据的一种 int 整型数据,通常为编译器指定的机器字长 float 单精度浮点型...转载 2018-02-18 15:21:10 · 1146 阅读 · 0 评论 -
字符串指针&&字符数组
研究问题:字符串指针作函数参数?要点:C语言中没有特定的字符串类型,通常是将字符串放在一个字符数组;而指针和数组的规则同样也适用于字符数组。字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。截图展示区: 1. ...原创 2018-02-15 17:51:46 · 224 阅读 · 0 评论 -
动态数组分配
研究问题:使用malloc创建动态多维数组的3种方法: 利用二级指针申请一个二维数组.(见“数组与指针”) http://blog.csdn.net/qq_31360933/article/details/79320368 用数组指针形式申请一个二维数组.(见“数组与指针”) http://blog.csdn.net/qq_31360933/article/details/79320...原创 2018-02-15 17:39:41 · 212 阅读 · 0 评论 -
typedef与typedef struct
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名。Stu==struct ...转载 2018-02-15 17:30:59 · 368 阅读 · 0 评论 -
结构体数组
研究问题:结构体数组的定义以及初始化和引用?结构体的引出?结构体数组?要点: 详情请见: 结构体与结构体数组http://download.csdn.net/download/qq_31360933/10252178引入数组的原因:表示一类数据,数据集合,如一个班的成绩。但类型相同。 结构体: 表示逻辑相关,数据类型不同的数据。 使用结构体将不同数组类型的数据组...原创 2018-02-15 17:27:42 · 312 阅读 · 0 评论 -
C99语法规则
研究问题:结构体,数组?要点:C语言的发展历史大致上分为三个阶段:Old Style C、C89和C99.Ken Thompson和Dennis Ritchie发明C语言时有很多语法和现在并不一样,但为了向后兼容性(Backward Compatibility), 这些语法仍然在C89和C99中保留下来了.C89是最早的C语言规范,于1989年提出,1990年先由ANSI...转载 2018-02-15 17:09:49 · 10949 阅读 · 2 评论 -
结构体
研究问题:结构体struct的应用、结构体变量、结构体指针变量、结构体指针变量类型的区别?结构体在内存中存储,字节对齐?要点:参照: 结构体struct的应用、结构体变量、结构体指针变量、结构体指针变量类型的区别 - HIT_微笑前进的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/ymzmdx/article/details...原创 2018-02-15 09:46:50 · 128 阅读 · 0 评论 -
线程与进程
研究问题:线程与进程间的关系?_beginthread函数调用?使用CRT(CRT: (C Runtime Library)即C运行时库,是系统运行的基础,包含了c常用的函数集(如:printf,malloc,strcpy等),为运行main做了初始化环境变量、堆、io等资源,并在结束后清理。)的多线程函数集。管理线程的工具?要点:一个程序至少含有一个线程,一个进程...原创 2018-02-14 11:45:50 · 101 阅读 · 0 评论 -
静态库与动态库的那点事
研究问题:静态库与动态库的相关概念以及使用方法?要点:静态lib是把文件中用到的函数代码直接连接进目标程序,程序运行时不再需要其它库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件支持。静态lib是在链接的时候打包到exe文件中,而动态DLL不必被包含在exe文件中,exe文原创 2018-02-13 13:43:40 · 174 阅读 · 0 评论 -
cmd
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr.msc:证书管理实用程序 4. charmap:启动字符映射表 5. chkdsk.exe:Chkdsk磁盘检查(管理员身份运行命令提示符) 6. cleanmgr: 打开磁盘清理工具原创 2018-02-13 13:29:31 · 346 阅读 · 0 评论 -
强制类型转换与取整对比
对float类型强制转换为int型 对float型取整PS:该贴正在更新中……原创 2018-02-18 15:28:22 · 1593 阅读 · 0 评论 -
有符号与无符号数据类型操作运算
研究问题:对比有符号与无符号数据类型?要点:无符号unsigned与有符号在进行算术运算时有符号的数据类型无需转化无符号数据正负符号。无符号unsigned与有符号逻辑运算时要将无符号数据正负符号转化为0/1码(0正1负)再运算。截图展示区:unsigned使用#include<stdio.h>int main(void){ ...原创 2018-02-18 15:32:30 · 940 阅读 · 0 评论 -
指针变量的赋值与引用&&二重指针
研究问题:函数参数问题(一级指针与二级指针)?区分实参与值参?指针变量的赋值和做函数的参数??指针到底是变量,还是地址???指针变量需要另外开辟内存存储?要点:http://blog.chinaunix.net/uid-20361370-id-1962457.html - 指针变量有时也可以简称为”指针”(大多数情况下),它是存放它所指向的变量的地址的变...原创 2018-03-21 12:17:46 · 322 阅读 · 0 评论 -
内存缓冲区
研究问题:内存缓冲区分类??gets()与scanf()读入数据的区别??避免清除缓冲区数据??要求:读取字符时: scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中); getchar()以Enter结束输入,也不会舍弃最后的回车符; 读取字符串时: scanf()以Space、Enter、Tab结束一次输入! gets(原创 2018-03-21 09:49:45 · 2181 阅读 · 0 评论 -
关于sizeof()使用的几个圈套
研究问题:sizeof(指针变量)sizeof(数组名)sizeof(作形参的数组变量名)要点:在32位Linux下: char str[]=”Hello”; char *p=str; int n=10; void func(char str[100]) { ……; } void *p=malloc(100);sizeof(str)=...原创 2018-02-18 16:43:23 · 580 阅读 · 0 评论 -
结构体&&联合体--又来搞基
研究问题:结构体、联合体基本概念?结构体&&联合体为什么搞基?关于结构体、联合体中涉及到的内存对齐?要点:结构体是数据项的集合,每条结构体项由其类型和名称制定。 联合体是所有成员共用一个空间;使用的是同一个起始地址。这样,后来的数据就会覆盖先前的数据。所有联合体union的大小只配置一个足够大来容纳联合体成员中最大长度数据成员类型的大小; ...转载 2018-02-18 16:40:40 · 148 阅读 · 0 评论 -
字节对齐--结构体数据类型的存储
研究问题:什么是字节对齐?为什么要字节对齐?怎样字节对齐?要点:一个变量占用 n 个字节,则该变量的起始地址必须能够被 n 整除,即: 每个变量的起始存放地址 % n = 0, 对于结构体,这个 n 取其成员种的数据类型占空间的值最大的那个。 即:A1存储地址addr1%A1对齐值=0,A2按顺序后延,如果下一个地址addr2%A2!=0就补空,后移存储地址...转载 2018-02-18 16:33:20 · 207 阅读 · 0 评论 -
动态内存分配原因
研究问题?为啥要动态分配?什么时候动态分配?要点:为啥要动态分配 什么时候动态分配 关于这个问题应该归结到动态分配的好处上面了,跟指针到是没多大关系,只能说指针有指向动态分配内存块、访问内存块的功能。我觉得我也可以看看以前记录的关于动态分配的内容(为啥要进行动态分配) • 栈空间大小有限 这主要是体现在较大的程序上面。动态局部变量是存储在栈上的,而且栈...转载 2018-02-18 16:16:35 · 405 阅读 · 0 评论 -
表达式的入出栈操作
研究问题?前缀、中缀、后缀表达式的栈操作?要点:该水的时候还是要水,以下是链接>_< http://blog.csdn.net/antineutrino/article/details/6763722/转载 2018-02-18 16:14:07 · 277 阅读 · 0 评论 -
函数调用4种声明方式
研究问题:函数声明的几种方式?截图展示区:#include<stdio.h>// float avg(float,float);//第一种// float avg(float x,float y);//第二种 int main() {// float avg(float x,float y);//第三种 float avg(float,fl...原创 2018-02-18 16:11:25 · 1302 阅读 · 0 评论 -
数据存储类型:auto、static、register、extern
要点:auto类型:局部变量,关键字“auto”可以被省略。这些变量被表用时分配存储方式,函数调用结束后这些存储空间就被释放了。static类型:被static声明的变量为静态变量,函数调用结束后,这些变量不消失,而保留当前数据,下一次调用时变量的值为上一次掉用完后的值。register类型:Register修饰符暗示编译程序相应的变量将将被频繁使用,如果可能的话,应将其保存在CPU的寄...原创 2018-02-18 16:09:55 · 1231 阅读 · 0 评论 -
实参到形参的传递
研究问题:函数调用时,实参传递到形参时的转换问题?要点:参数的传递就是用实参初始化对应的形参。 非引用形参: 基本的情况:复制实参的值。函数并没有访问调用函数所传递的实参本身,所以不会改变实参的值。 void swap(int x, int y) { int tmp; tmp = x; ...转载 2018-02-18 15:52:58 · 3361 阅读 · 0 评论 -
转义字符
闲来无事,水一章要点:非常常用的一种用法,在反斜杠后面加一个字符,表示一些特定的意思,如: \n 换行符(LF) \r 回车(CR) ,相当于键盘上的”Enter” \t 跳到下一个TAB位置 \0 空字符(NULL) \’ 单引号(撇号) \” 双引号 \ 代表一个反斜线字符”\’ 等,详细可百度“转义字符”。引用磁盘文件路径时,如: ShellExecuteA(0, “ope原创 2018-02-13 13:28:21 · 140 阅读 · 0 评论 -
宏定义与typedef不能说的秘密
研究问题:宏定义#define与定义别名typedef使用方法?define与typedef区别?要点:宏定义#define为预处理指令在编译处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只在编译已被展开的源程序时才会发现可能的错误并报错。 typedef为复杂的声明定义简单的别名。在自己的作用域内给一个已经存在的类型一个别名。typedef四大用途:在C/C++中,原创 2018-02-13 13:26:24 · 171 阅读 · 0 评论 -
实现记事本编程
研究问题用记事本编写代码,并编译打包问题解决: error LNK2019: 无法解析的外部符号 __imp__keybd_event@16,该符号在函数 _search 中被引用要点:切记:注意添加库文件,无法解析且没有库文件的,需使用如:#pragma comment(lib, “shell32.lib”)截图展示区:同异步线程处理#i...原创 2017-01-06 21:35:29 · 3449 阅读 · 0 评论 -
值传递、引用传递与地址传递对比
研究问题引用传递:形参与实参公用一个内存单元,同时变化。值传递:形参是实参的克隆体,形参在内存单元中发生变化不会影响到实参。形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的。内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,...原创 2017-01-06 21:04:27 · 862 阅读 · 0 评论 -
转义字符
要点:非常常用的一种用法,在反斜杠后面加一个字符,表示一些特定的意思,如: \n 换行符(LF) \r 回车(CR) ,相当于键盘上的”Enter” \t 跳到下一个TAB位置 \0 空字符(NULL) \’ 单引号(撇号) \” 双引号 \ 代表一个反斜线字符”\’ 等,详细可百度“转义字符”。引用磁盘文件路径时,如:ShellExecuteA(0,”open”,”\”C:...原创 2017-01-07 11:02:49 · 214 阅读 · 1 评论 -
printf之打印问题
研究问题printf中数据类型解析问题?printf 是否能自动数据类型转换?printf格式化规定符?要点:printf不支持数据类型转换在按照给出的打印格式查找变量时 1》若与变量数据类型不匹配,则打印垃圾数据。 2》若变量数据类型有歧义性(如:define M 3.14),则编译器无法识别3.14是float\double\long\long,导致无法解析,结果打印为0。pr原创 2018-02-12 10:15:52 · 568 阅读 · 0 评论 -
屏幕打印
研究问题Printf,print,printlnSprintf与Sprintf_s地址打印%p与%#x区别??要点:Printf是C语言中格式化输出;print是标准输出,但是不换行;println和print差不多,就是最后会换行:println(“test”)相当于print(“test\n”)。%p指打印地址,没有格式的规定。%x指以十六进制形式打印。\t指后...原创 2017-01-06 13:10:25 · 364 阅读 · 0 评论 -
新浪cloud之Git版本控制
1:git:是一个工具(协同工具也就团队项目管理工具)2:将第一阶段所写的静态页面发布到网上 作为一个静态的网站3:第一步登陆新浪云 选择控制台下面的 云应用SAE4:创建应用---php-- 标准环境 --- 5.3 --git5:随便给网站取一个名称 不要用中文6:记录仓库地址https://git.sinacloud.com/h517057:安全邮箱地址就是用户名(仓库的用户原创 2017-12-19 20:43:28 · 155 阅读 · 0 评论 -
宏定义与typedef不能说的秘密
研究问题宏定义#define与定义别名typedef使用方法define与typedef区别要点:宏定义#define为预处理指令在编译处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只在编译已被展开的源程序时才会发现可能的错误并报错。 typedef为复杂的声明定义简单的别名。在自己的作用域内给一个已经存在的类型一个别名。typedef四大用途: 在C/C+原创 2017-01-06 21:57:30 · 4211 阅读 · 5 评论 -
堆与栈
研究问题为什么堆上地址是自下而上递增,而栈上地址是自上而下递增?堆与栈的区别要点栈是调用子程序安排函数参数和子程序临时变量用的,堆是子程序申请的内存。栈和堆的大小是动态的,在程序还没有运行的时候不知道大小。程序运行起来以后也是不确定的。栈和子程序的调用嵌套层次有关,堆和子程序的申请内存有关。所以一个从顶向下,一个从底向上。如果运行到两个重叠,表示内存不够。这样安排比较合理。 堆和栈有什么区别原创 2017-01-06 21:09:01 · 208 阅读 · 0 评论 -
堆与栈的区别
要点一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静原创 2017-01-06 20:51:32 · 253 阅读 · 0 评论 -
数组
研究问题C99中int a[]={[4]=0}表示a[4]=0,即数组个数为5个数组在内存中的存储方式?区分数组地址:&a与a的区别?区分数组地址:&a+1与a+1的区别?要点在内存中,数组a[]一般是是以栈的形式存储的,除非使用new,malloc申请动态分配内存是在堆上。&a与a结果一样,但表示的意义不同:&a表示整个数组的首地...原创 2017-01-06 21:12:20 · 183 阅读 · 0 评论 -
随机数Rand()
研究问题对比VB与C中随机数的取值方法取[a,b]区间的随机数为rand()%((b-a)+1)+a要点Rand()%s:随机数除以s所得的余数,即[0,s-1]。Rand()%((b-a)+1)取[0,b-a]区间的数,rand()%((b-a)+1)+a即取[a,b]区间的数。不同于VB,在C与C++中rand()会返回一随机数值,范围在0至RAND_MAX间。...原创 2017-01-06 20:58:03 · 304 阅读 · 0 评论 -
实现记事本编程
研究问题:用记事本编写代码,并编译打包?问题解决: error LNK2019: 无法解析的外部符号 __imp__keybd_event@16,该符号在 函数 _search 中被引用要点:切记:注意添加库文件,无法解析且没有库文件的,需使用如:#pragma comment(lib, “shell32.lib”)截图展示区: 2. #include<stdio.h>#incl原创 2018-02-13 13:20:39 · 1781 阅读 · 0 评论 -
指针变量的赋值与引用&&二重指针
研究问题:函数参数问题(一级指针与二级指针)?区分实参与值参?指针变量的赋值和做函数的参数??指针到底是变量,还是地址???指针变量需要另外开辟内存存储?要点:http://blog.chinaunix.net/uid-20361370-id-1962457.html指针变量有时也可以简称为”指针”(大多数情况下),它是存放它所指向的变量的地址的变量. 那么,既然它本身也是一个变量,那原创 2018-02-13 13:13:28 · 2253 阅读 · 1 评论 -
解析指针
研究问题指针分类:指针数组,数组指针;结构体指针,函数指针,指针函数?指针的取址与赋值操作(int *p=&a与int *p=a)? int *p=&a 其实是两个语句 等价于 int *p; p=&a; 如果a是int型,int *p=a是错误的,正确的应该是 int *p; p=&a; 在定义的时候不能给p直接赋值整型,只能赋值int型地址 即 &a; 如果要给p指针指原创 2018-02-13 13:03:36 · 672 阅读 · 0 评论 -
一维数组与二维数组
问题研究数组维度的联系??相邻维度数组的关系?要点:a = &a[0] = &a[0][0] a表示这个二维数组的首地址 &a[0]表示的是这个二维数组第一维的首地址 &a[0][0]表示的是这个二维数组第一维第一个元素的地址。 这三个地址是相同的。 就好像一个班的位置,第一个位置,和第一排的第一个位置,以及第一排一号的位置指的是同一个位置一样。 但是 *a表示第一维首地址原创 2018-02-13 11:15:46 · 603 阅读 · 0 评论