C语言随记
小菜鸡的蜕变之路
长路漫漫,若能坚持,未来可期,加油~
展开
-
strlen()和sizeof()的区别
strlen()求的是长度,针对的对象是字符串,而 sizeof()求的是大小,针对的是类型,首先大家要明确的一个概念是,strlen()是函数,而 sizeof()表面看起来是函数,其本质是关键字。#include<stdio.h>#include<string.h>void main(){ char str[] = "hello worl...原创 2019-05-22 22:21:38 · 234 阅读 · 0 评论 -
C++中有哪些常量?
按数据类型分为:整型常量、浮点型常量、字符型常量、字符串型常量、转义字符型常量、地址常量。原创 2019-06-30 22:16:45 · 1467 阅读 · 0 评论 -
作用域运算符的作用
作用域运算符(::)的作用:1.存在具有相同名称的局部变量时,访问全局变量。2.在类之外定义类相关函数。3.访问类的静态变量。4.在多重继承的情况下,如果两个基类中存在相同的变量名,可以使用作用域运算符来进行区分。5.限定成员函数所属的类。...原创 2019-06-30 23:08:45 · 9123 阅读 · 0 评论 -
复杂指针解析
复杂指针解析-----右左法则(用于理解复杂指针的声明)右左法则----首先从最里面的圆括号看起,然后往右看,再往左看每当遇到圆括号时,就应该调转阅读方向,一旦解析完圆括号里面的所有内容,就跳出圆括号,重复这个过程,直至整个声明解析完毕。应该从未定义的标识符开始阅读,而不是从括号阅读起,之所以是未定义的标识符,是因为一个声明里面可能有多个标识符,单未定义的标识符只会有一个。先热热身~...原创 2019-07-18 09:30:25 · 454 阅读 · 0 评论 -
对*p++与*++p;(*p)++ 与 ++(*p)的理解
参考:https://blog.csdn.net/baidu_37973494/article/details/82761455*p++:等同于:*p; p += 1;解析:由于*和++的运算优先级一样,且是右结合。故*p++相当于*(p++),p先与++结合,然后p++整体再与*结合。前面陈述是一种最常见的错误,很多初学者也是这么理解的。但是,因为++后置的时候,本身含...转载 2019-07-16 08:57:13 · 27612 阅读 · 12 评论 -
尽量避免使用void main()
尽量不要使用voidmain(),因为其可能会有非预期的结果。最好用以下两种方式:第一种"intmain()"第二种"intmain(intargc,char*argv[])"原创 2019-07-16 10:08:59 · 4567 阅读 · 0 评论 -
实现strlen() 、strcpy()学习笔记
①strlen()参考:https://blog.csdn.net/windyj809/article/details/80037006功能:其用于计算字符串中字符的个数,不包括'\0',遇到'\0'结束。注:1、我们定义的指针不能为空,所以要使用assert进行断言。2、因为是判断字符串长度,所以字符串是不变的,所以用const修饰,使其更加安全。第一种方法,使...转载 2019-07-16 16:45:27 · 185 阅读 · 0 评论 -
大小端模式总结
大端:所谓的大端存储,即低地址存放高位数据,高地址存放低位数据。小端:所谓的小端存储,即低地址存放低位数据,高地址存放高位数据。对于一个数据0x12345678,对应大小端存储方式如下:小端存储方式0x00 |78|0x01 |56| 0x02 |34|0x03 |12|大端存储方式0x00 |12|0x01 |34| 0x...原创 2019-07-18 22:50:14 · 210 阅读 · 0 评论 -
大端序和小端序问题及内存分配管理
目录目录一 字节序 大端序和小端序1 代码实现 测试字节序二 C内存地址分配简介三 CC内存区划分具体内容见:https://blog.csdn.net/dcpkeke/article/details/48055847#%E7%9B%AE%E5%BD%95...转载 2019-07-19 16:29:06 · 196 阅读 · 0 评论 -
位运算总结及相关面试题
短路求值#include<iostream>using namespace std;int main(){ int a = 0; int b = 2; int v = a && ++b; //短路求值,a为0,整个表达式直接为0 cout<<b<<endl; //b未运算,为初始值2 ...原创 2019-07-20 15:52:03 · 208 阅读 · 0 评论 -
sizeof()与strlen()复习总结(大量例题)
strlen()用于求字符串的长度,针对的对象是字符串,不包括结束符‘\0’;sizeof()用于求所占空间大小,针对的是类型,包括‘\0’;注:首先大家要明确一个概念,strlen()是函数,sizeof()表面看起来是函数,但其本质是关键字。话不多说,直接上题~例:#include<iostream>#include<string.h>...原创 2019-07-17 22:07:34 · 793 阅读 · 0 评论 -
sizeof总结(字节对齐)
字节 char short float int long *(地址) double 32位 1 2 4 4 4 4 8 64位 1 2 4 4 8 8 ...转载 2019-07-15 21:53:23 · 1231 阅读 · 0 评论 -
可执行文件生成过程具体做了什么事?
预处理->编译->汇编->链接1、预编译(main.c-->main.i)预编译主要处理代码中以#开头的预编译指令,其编译的规则如下:展开宏定义 处理预编译指令,如#include预编译指令,将文件内容替换到它的位置,这个过程是递归进行的,文件包含其他文件 删除注释,例如://、/**/ 保留#pragma编译器指令,例如:#pragma once是为了防...转载 2019-09-22 20:55:21 · 632 阅读 · 0 评论 -
常量和变量的区别
(1)常量的值不能修改,而变量可以通过赋值来改变值。(2)常量在定义时必须初始化,变量可以暂不初始化。(3)常量不可以寻址,其地址不允许赋给非常量指针,因此只能作为左值;而变量可以寻址,其既可以作为左值,也可以作为右值。(4)常量编译时,可以以立即数形式编译进指令,比起使用内存的变量执行效率更高。...原创 2019-06-30 22:12:59 · 1358 阅读 · 0 评论 -
运算符分类
1.算术运算符 用于各类数值运算。包括加(+)、减(-)、乘()、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种。2.关系运算符 用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。3.逻辑运算符 用于逻辑运算。包括与(&&)、或(||)、非(!)三种。4.位操作运算符 参...转载 2019-06-30 21:55:14 · 5339 阅读 · 1 评论 -
C语言中自定义的标识符
C语言中的标识符有:关键字、预定义标识符、用户标识符1.关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。2.预定义标识符是C语言中系统预先定义的标识符,如系统类库名、系统常量名、系统函数名。预定义标识符具有见字明义的特点,如函数“格式输出”(英语全称加缩写:pri...原创 2019-06-22 22:19:03 · 13726 阅读 · 0 评论 -
C/C++的八进制表示
C/C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。...原创 2019-06-22 22:23:07 · 7911 阅读 · 0 评论 -
LINK : fatal error LNK1168: cannot open Debug/c_pub_test.exe for writing 解决方法
在使用VC++运行程序时,第一次没有任何问题,但是当再次运行时就会出现:LINK : fatal error LNK1168: cannot open Debug/Test.exe for writing这个错误;常用的解决方式是:1.打开电脑的资源管理器(按Ctrl+Alt+Delete)把Test.exe 进程强制杀死,然后在运行就可以了,如果在资源管理器中找不到只能使...转载 2019-06-22 22:51:09 · 2540 阅读 · 0 评论 -
i++和++i分析(详细的例子加以说明)
i++表示先在表达式中使用i,之后再将i自增,即i =i + 1。++i表示先将i的值加1,再在表达式中使用i。举几个例子:①求i +=i++;#include<iostream>using namespace std;void main(){ int i = 4; i += i++; cout<<"i = "<...原创 2019-07-01 22:52:06 · 4127 阅读 · 0 评论 -
C语言中的自定义标识符的规则
C语言中的自定义标识符的规则:1、C语言中的标识符只能由字母,数字,下划线组成而且第一个字符必须是字母或下划线。 如:int 34A是非法的,而int a_s是合法的 .2、C语言中区分大小写 如:int A;和int a; 代表不同的变量.3、不能与C语言中的关键字(如int、if、else等)、预定义标识符(如printf、define等)重名。 如:int printf;是非法的....原创 2019-07-01 23:02:55 · 31581 阅读 · 1 评论 -
运算对象为整数的运算符
%(取余),~(取反),^(按位异或),&(按位与),|(按位或)这几个运算符都要求运算对象必须是整型。原创 2019-07-01 23:05:13 · 6754 阅读 · 0 评论 -
switch语句总结
switch语句执行思想:先计算switch里表达式的值,然后将值与case后的常量或常量表达式值进行比较,找到匹配的,则程序执行匹配case后的语句;break为结束标志;若未遇到,则按顺序往下执行;若未找到与switch相匹配的case,则程序执行default后的语句。注:(笔试题中考的一些小细节)1、case与default先后顺序无所谓,谁先谁后都可以。switch(a...原创 2019-07-07 16:27:33 · 2304 阅读 · 0 评论 -
函数缺省值规则
1:参数给缺省值只能从右往左给定voidFuntest(inta,intb;intc=30)*可以voidFuntest(inta=10,intb;intc)*不行voidFuntest(inta=10,intb;intc=30)*不行2:缺省值必须是常量或者全局变量3:C语言不支持缺省参数此外:①:在调用函数时,有实参使用实参,且从左边...原创 2019-07-02 20:57:39 · 2948 阅读 · 0 评论 -
文件打开方式
打开方式 说明r 以只读方式打开文件,该文件必须存在。r+ 以读/写方式打开文件,该文件必须存在。rb+ 以读/写方式打开一个二进制文件,只允许读/写数据。rt+ 以读/写方式打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则长度清为0,即该文件内容消失,若不存在则创建该文件。w+ 打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会...原创 2019-06-27 21:49:07 · 2215 阅读 · 0 评论 -
VC++6.0 调试入门
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppW...转载 2019-06-29 21:52:05 · 2615 阅读 · 0 评论 -
C/C++动态内存管理
转自:https://blog.csdn.net/ling_hun_pang_zi/article/details/81746543C/C++动态内存管理内存分配的方式有3种:1、从静态存储区域分配内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如:全局变量、static变量。2、在栈上分配在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这...转载 2019-06-30 17:53:09 · 202 阅读 · 0 评论 -
C/C++ 动态内存分配
首先我们看看 c 语言是如何进行动态内存分配的;c 语言主要是使用malloc / calloc / realloc 来进行内存申请的。malloc / realloc / calloc三者的共同点与不同点:共同点1、都是从堆上进行动态内存分配2、释放内存都是需要使用free函数来释放3、三者的返回值都是void*4、都需要强制类型转换5、都需要对申请出的空间判空(因为申请内存失败...转载 2019-06-30 18:03:06 · 21807 阅读 · 2 评论 -
静态链接和动态链接区别
1.静态链接与动链接的区别在C语言中,我们知道要生成可执行文件,必须经历两个阶段,即编译、链接。在编译过程中,只有编译,不会涉及到链接。在链接过程中,静态链接和动态链接就出现了区别。静态链接的过程就已经把要链接的内容已经链接到了生成的可执行文件中,就算你在去把静态库删除也不会影响可执行程序的执行;而动态链接这个过程却没有把内容链接...转载 2019-09-22 22:20:55 · 20294 阅读 · 0 评论