- 博客(9)
- 收藏
- 关注
原创 new 和delete
new的功能可以被拆解为三步:一是通过调用malloc分配无类型空间(大小为类的大小)二是进行指针类型转换三是调用类的构造函数(赋初值之类的操作)delete的功能可以被拆解为两步:一是调用析构函数二是调用freedelete这里的执行顺序是先析构在free,顺序很重要,否则很有可能会造成内存泄漏:比如:x=new string;delete x;如果先调用free,那么直接释放的是x这个指针的所占用的空间,那么x所指向的内容就不能被释放,就会造成内存
2022-01-26 14:01:43
360
原创 左值和右值引用
左值引用:int a=4;int &b=a;//b是a的别名,所有操作一样。引用变量初始化以后就不能再指向其他别的元素。右值引用://c++11增加的一个非常量的引用类型,右值指的是临时变量(如函数的返回值),当右值引用初始化以后,临时变量就消失了,右值引用具有临时变量的类型。类型 && i=被引用的对象;如:int get(){int i= 4;return i;}int main(){int && k =get()+4;//int &
2020-09-24 10:16:51
101
原创 内存泄漏。。。
//内存泄露,分配在堆区的动态内存不会自己主动销毁,需要用delete,如果不回收,系统就会浪费很多的资源。#includeusing namespace std;int main(){float *pf = NULL;pf = new float;*pf = 4.321f;float f2= 5.321f;cout<<“pf指向的地址:”<<pf<<endl;cout<<"*pf的值:"<<*pf<<endl;pf
2020-09-24 09:53:44
112
原创 内存销毁
#includeusing namespace std;int *sum(int a ,int b){int *ps = NULL;int c=a+b;ps =&c;return ps;}int main(){int *pl= NULL;int k1=3;int k2=5;pl = sum(k1,k2);//pl从sum中获得一个临时指针,该指针是指针ps的临时复制品,操作完成后会消失,它所保留的地址交给了pl;//sum执行完毕以后,该域使用的栈内存会被系统销毁甚至挪用
2020-09-24 09:42:24
174
原创 返回值为指针的一些笔记
返回值为指针的一些笔记:#includeusing namespace std;//函数中返回的是定义中i的地址,函数执行后,i的内存被销毁,值变成了一个随机值int *pointer(int *p){int i=9;cout<<“函数体中的i的地址:”<<&i<<endl;cout<<“函数体中i的值:”<<i<<endl;p=&i;return p;}int main(){int *k = N
2020-09-21 20:32:43
77
原创 c++的void指针类型和const的用法
c++空类型的使用;int i = 100;int p =&i;char a=‘b’;char * str=&a;void q=NULL;q=p;//只是将p里面的值赋给q,q的类型还是空类型。cout<<(int )q<<endl;//要转化类型才能读出我们想要的内容。q=str;cout<<(char)q<<endl;c++ const的用法#includeusing namespace std;int main
2020-09-21 10:20:16
585
原创 C语言可变参数问题(va_list,va_start,va_arg,va_end用法及定义)
#include#include<stdarg.h>using namespace std;void Outputinfo(const char pchdata=“One world,one dream!”){cout<<pchdata<<endl;}int GetMax(int x,int z,int y=10){//默认值只能在所有非默认值的右边,否则会发生错误。if(x<y)x=y;if(x<z)x=z;return x;}vo
2020-09-17 17:32:42
593
原创 C语言实现生命游戏
生命游戏规则:孤单死亡:细胞邻居小于一个,则细胞在下一次状态将死亡拥挤死亡:细胞邻居在四个及以上,则该细胞在下一次状态将死亡稳定:细胞的邻居为两个或三个,则下一次状态为稳定存活复活:原位置无细胞存活,而该位置的邻居为三个,则该位置将复活一细胞。代码如下:#include<stdio.h>#include<stdlib.h>#define DEAD 0#def...
2020-03-15 00:19:45
994
1
原创 约瑟夫环链表解决方式
#include<stdio.h>#include<stdlib.h>#define N 13struct link_list{ int i; struct link_list *next;} ;struct link_list * build(){ int j; struct link_list * head=((struct link_list *)m...
2020-03-07 20:49:42
115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人