C++学习小记(2016.7.29)

入职三周了,主要在学习LTE的相关知识和爱立信内部的软硬件的知识。但是自己仍然还是一个程序员,以后要做开发的工作,语言是开发的基础,在公司里用的最多的就是C++了,其实大学里记住的那些东西太少了,所以还是要不断地学习。
关于内存的动态分配的问题,在C语言中使用的是malloc,这样分配的得到的内存是存在于堆里的,分配之后,需要程序员自己去释放(用free()函数),或者等程序都结束了系统自动释放。在C++里面使用的则是new和delete。关于new,使用方法:typeName Pointer_name = new typeName ,举例说明 int **p = new int ; 在这里,new int 类型告诉程序,需要适合存储int类型的内存,new操作符根据类型来确定需要多少字节的内存,然后,它找到这个内存,并返回其地址,接下来,将地址赋值给p,p是被声明为指向int的指针,现在p是地址,而*p是存储在那里的值。关于deldete,是用来释放new申请的动态内存的,举例说明,int *p = new int; delete p;在这里将释放指针P指向的内存,但是不会删除指针P本身。
关于使用new来创建动态数组。举例说明,int *arr = new int [10];
这里new操作符返回第一个元素的地址,并将其赋值给arr,当程序结束的时候,应该用delete释放它们,代码:delete [] arr;[]告诉程序要释放整个数组,而不仅仅是指针指向的元素。
使用new和delete的时候,应该注意:
1.不要用delete释放不是new分配的内存。
2.不要使用delete释放同一个内存块两次。
3.如果使用new[]为数组分配内存,则应该使用delete[]来释放。
4.如果使用new[]为一个实体分配内存,则应该使用delete[]来释放。
5.对于空值指针应用delete是安全的。
使用new来创建动态数组的代码:
typeName pointer_name = new typeName [num_elements];
访问数组元素的时候,因为arr是指向数组第一个元素的指针,所以数组的第一个元素就是*arr,这时,可以把arr看作一个数组,arr[0]就是数组的第一个元素的值,arr[9]是数组的第十个元素的值。但是他和数组名还是有不同的,可以进行arr = arr+1的操作,但是数组名不可以,因为不能修改数组名的值,但是可以对指针的值进行修改,+1以后,指针arr指向的就是数组中的第二个元素。

关于指针算术。
将整型变量加1后,其值将增加1,但是将指针变量加1后,增加的量等于它指向的类型的字节数,例如指向的是int类型的变量,则增加的量为4。
在C++里,C++将数组名解释为数组的第一个元素的地址。
假设一个数组stack[],则(stack+1)和stack[1]是等价的,在C++中一般会执行这样的转换,arrayname[i] become (arrayname + i);
如果使用的是指针,则进行转换:pointername[i] become *(pointername + i)
在很多的情况下可以使用相同的方法使用指针名和数组名,但是两者之间也是存在区别的,就是我们可以修改指针的值,但是数组名是常量,不能修改。
还有一个区别就是对数组应用sizeof操作符得到的是数组的长度,但是对于指针用sizeof操作符得到的是指针的长度,即使指针指向的是一个数组。
例如double wage[3] = {10000.0, 20000.0,30000,0};
short stacks[3] = {3,2,1};
double *pw = wages;
short +ps = &stack[0];
这段代码中pw和wages指的是同一个数组,但是size of wage array = 24;
size of pw pointer = 4;

指针于字符串
如果给cout一个字符的地址,那么它将从该字符开始打印,知道遇到空的字符为止。
在cout和多数C++表达式中,char数组名、指向char的指针以及用引号括起的字符串常量都被解释为字符串第一个字符的地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值