指针

C++内存分布,堆区和栈区,函数调用栈

1.对给定类型添加一层指针,移除给定类型的一层指针

std::add_pointer和std::remove_pointer

指针常量与常量指针

const int*
int* const

2.指针函数与函数指针

函数指针与回调函数

仿函数:std::function

3.函数返回局部变量,裸指针,智能指针

对于函数返回局部变量的场景,若该局部变量是值,则没有问题
22

当函数返回一个局部变量的指针问题,内存是否被释放

函数返回局部变量/局部指针

函数不能返回智能指针,因为智能指针只在函数内部有效,当智能指针超出其作用域时,该变量将被清除,从而导致指针无效。

4.示例代码

#include<iostream>

using namespace std;

int main()
{
    /*
    指针就是地址
    用来存储地址的变量称为指针变量
    int* p;   //*是为了说明p是一个指针

    声明变量的语法:类型 变量名   
    因此去掉变量名后就是变量的类型,即int* p; 指针p的类型是int*
    指针变量指向的类型:对应地址存储的数据类型
    int* p;  去掉变量名和*就是指向的数据类型
    */
    cout << sizeof(int*) << "\t" << sizeof(char*) << "\t" 
          << sizeof(int) << "\t" << sizeof(char) << endl;  // 4 4 4 1

    int* p = nullptr;
    cout << p<<endl;
    int i = 0;
    p = &i;
    cout << p<<endl;
    cout << *p << endl;
    *p = 10;
    cout << *p;

    //数组
    int arr[] = { 1, 2,3,4,5 };
    cout << arr << "\t" << *arr<<"\t"<<;

    return 0;

}

原文链接: https://www.cnblogs.com/mmmmmmmmm/p/14319622.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    指针

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404206

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月24日 下午6:44
下一篇 2023年4月24日 下午6:44

相关推荐