指针、引用、数组
JiBeon
这个作者很懒,什么都没留下…
展开
-
数组指针和指针数组
数组指针也称为行指针,它是一个指向数组的指针。数组指针只是一个指针变量,可以用来指向二维数组,它占用一个指针的存储空间。int (*p)[n];定义中()优先级高,首先说明p是一个指针,指向一个整型的一维数组。这个一维数组长度是n,也可以说是p的步长:执行p+1时,p要跨过n个整型数据的长度。指针数组是多个指针变量以数组的形式存在内存当中,占用多个指针的内存空间。int *p[n];...原创 2019-07-01 14:55:14 · 133 阅读 · 0 评论 -
指针和引用
指针和引用的区别:从本质上看,指针是地址,引用是别名;从现象上看,指针可以在运行时改变其所指向的值,而引用则总是指向在初始化时被指定的对象不能改变;从内存分配看,程序为指针变量分配内存区域,而不为引用分配内存(所以引用申明时必须初始化,指向一个已经存在的对象);对指针的级数没有限制,但是引用只能是一级:int** p1; //合法,指向指针的指针int*& p2; //合法...原创 2019-07-01 15:54:49 · 153 阅读 · 0 评论 -
字符数组求长度:strlen()、sizeof()
蓝色神秘代码膜拜大佬https://blog.csdn.net/z_qifa/article/details/77744482strlen()是函数,在运行时才能计算。参数必须是字符型指针(char*),且必须是以’\n’结尾的。当数组名作为参数传入时,实际上数组已经退化为指针了。它的功能是返回字符串的长度(方式是从字符串的第一个地址开始遍历,知道遇到结束字符’\0’),它返回的长度大小不包括...转载 2019-07-01 13:35:42 · 4887 阅读 · 0 评论 -
智能指针
智能指针是行为类似于指针的类对象,智能指针包含在头文件<memory>中动态内存管理经常出现的问题:忘记释放内存造成内存泄漏;尚有指针引用就释放,造成引用非法内存的指针。智能指针可自动释放所指向的对象。智能指针包括:auto_ptr、unique_ptr、shared_ptrauto_prt:C98++提供,但已被C++11摒弃。unique_ptr:建立所有...原创 2019-06-26 22:24:07 · 131 阅读 · 0 评论 -
C++字符串和C字符串的转换
(1) .data()data()以字符数组的形式返回字符串内容,但并不添加’\0’。(2) .c_str()c_str()返回一个以’\0’结尾的字符数组。string str = "Hello world.";const char * cstr = str.c_str();上例中,改变了str的内容,cstr的内容也会随着改变。可以将数据复制出来解决问题:string str ...原创 2019-07-05 10:42:24 · 570 阅读 · 0 评论 -
定位new运算符
定位new运算符使得可以在分配内存时指定内存位置。定位new运算符直接使用传递给它的地址,不负责判断哪些内存单元已被使用,也不查找未使用的内存块。由于本质上定位new运算符并不开辟新的内存,也就不应该用delete释放它。char * buffer = new char[152];JustTest *pc; //假设前面已声明了一个JustTest类pc = new (buffer)...原创 2019-06-17 20:42:08 · 198 阅读 · 0 评论