- 博客(13)
- 收藏
- 关注
原创 类型转换
隐式转化(编译器自动转换运算对象的类型):何时发生?1、在大多数表达式中,比int类型小的整型值首先提升为较大的整数类型;2、在条件中,非布尔值转换成布尔类型;3、初始化过程中,初始值转换为变量的类型;在赋值语句中,右侧运算对象转换成左侧运算对象的类型;4、如果算术运算或关系运算对象有多重类型,需要转换成同一类型;5、函数调用时也会发生类型转换bool flag;short sva...
2019-04-17 17:24:59
197
原创 sizeof
sizeof返回一条表达式或一个类型名字所占的字节数,满足右结合率。sizeof的运算对象有两种形式:Sales_data data,*p;// sizeof (type)sizeof (Sales_data)// sizeof exprsizeof data;sizeof运算符的结构部分依赖于其作用的类型:1、对char或者类型为char的表达式执行sizeof运算,结果得1;...
2019-04-16 10:35:56
243
原创 递增(++)和递减(--)运算符前置版本和后置版本的区别【i++,++i的区别】
前置版本(++i):首先将运算对象加1,然后将改变后的对象作为求值结果;后置版本(i++):也会将运算对象加1,但是求值结果是运算对象改变之前那个值的副本;int i = 0,j;j = ++i; //j = 1,i = 1;前置版本得到递增之后的值; 即 i = i + 1, j = 1;int i = 0,j;j = i++; //j = 0,i = 1;后置版本得到...
2019-04-10 16:49:22
580
原创 C++中的关于左值右值的理解
C++中的表达式要不然是右值,要不然就是左值:当对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。几种需要用到左值的运算符:1、赋值运算符,得到的结构仍为左值;2、取地址运算符作用域一个左值运算对象,返回一个指向该运算对象的指针,这个指针是右值;3、内置解引用运算符,下标运算符,迭代器解引用运算符,string和vector的下标...
2019-04-08 22:46:45
259
原创 C++ 指针和引用
指针和引用的相同点:都实现了对其他对象的简介访问引用:引用相当于为对象另外起一个名字,可以通过&d的形式来定义引用类型;需要注意的是引用必须被初始化(why?定义引用时,程序把引用和对象的初值绑定在一起,而不是拷贝值给引用。一旦初始化完成,引用将和它的初值一直绑定在一起,无法令引用重新绑定到另外一个对象上)。int a = 1000;int &b = a;1、引用是一个...
2019-04-08 16:38:33
150
原创 变量声明和定义的关系
C++中,变量和对象可以互换使用,表示一块能存储数据并有某种类型的内存空间。为了支持分离式编译(separete compilation)【该机制允许将程序分割为若干个文件,每个文件可以被独立编译】,C++语言将声明和定义区分开。声明:使名字为程序所知,规定了变量的类型和名字;定义:负责创建与名字关联的实体,申请存储空间,也可能赋一个初值;若想声明一个变量而非定义它,在变量名前添加关键之e...
2019-04-08 14:29:38
364
原创 链接动态库
.lib 资源模式文件 描述.dll文件.dll 动态库(函数二进制码集合,里面有函数的函数体),动态库室友规范的;如何链接动态库?将.lib和.dll文件拷贝到对应文件下把.lib文件加入到下面的对话框中(可以理解为让编译器通过.lib文件去寻找.dll文件)动态库测试环境和调试环境搭建在DLL代码中,必须向下面这样明确声明导出函数:__declspec(dllex...
2019-04-04 17:13:35
348
原创 C语言指针学习中易犯的错误
1、向null地址处copy数据char *str = NULL;strcpy(str,"aaaaabbbbb");错误!NULL是操作系统保护的空间,不能往里面拷贝数据;2、void Swap(int a,int b)//错误案例//不能实现实参a,b的互换void Swap(int a,int b){ int tmp = a; a = b; b = tmp...
2019-04-01 15:24:14
277
原创 结构体知识点梳理
定义结构体变量及初始化的方法1)定义类型 用类型定义变量typedef struct Teacher{ char name[64]; int age; int id;}Teacher;int main(){ Teacher t0 = {"Mr Li ziyi",21,01}; strcpy(t0.name,"t1name"); //t1. "."操作符 寻址操作,计...
2019-03-30 22:20:04
376
原创 多维数组(数组类型,数组指针,数组指针类型)
数组:概念元素类型角度:数组是相同类型的变量的有序集合 测试指针变量占有内存空间大小内存角度:联系的一大片内存空间易忽略的细节数组首元素的地址和数组地址是两个不同的概念;数组名代表数组首元素的地址,它是个常量;数组首元素的地址和数组的地址值相等;int Myarray100] = {0};//Myarray是数组首元素地址,Myarray+1 步长是四个字节(siz...
2019-03-26 16:08:49
373
原创 二级指针做输入的几种模型
字符串数组的排序和打印:第一种模型:交换的是指针指向1、char *myArray[] = {"aaaaaaa","ccccccc","bbbbbbbb","111111111"}myArray先与[]结合,所以myArray是一个数组,然后再与*结合,说明数组里的元素是指针类型,然后再与char结合,说明指针所指向的内容是char型的。myArray是一个指针形成的数组的首地址,所以...
2019-03-24 22:52:13
240
原创 char *p = "abcdefg"; 常量字符串"abcdefg"位于静态存储区,通过p不能修改该字符串常量
一、程序的内存分配1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等;2、堆区(heap) :一般由程序员分配释放, 若程序员不释放,程序结束时可能由操作系统OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表; (malloc,new,free,delete)3、全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量...
2019-03-17 22:23:08
1431
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人