如果想要通过指针输出内存对象,给指针变量加上取值符号”*”,输入命令: fmt.Println(*p); 输出内容:100 3、创建指向指针的指针: 我们再创建一个指向指针的指针变量: var pp **int; pp=&p; fmt.Println(pp);//输出指针变量p的内存地址。 fmt.Println(*pp);//输出指针变量p的值,也就是i的地址。 fmt.Pr...
如上代码所示使用引用作为形参,在函数被调用时实质就是传递了实参,这里和指针有点类似,或者说和java中的参数传递类型,传递的是一个具体的对象引用。 这里提下关于C++中传参的两个建议: 1.对于内置基础数据类型(如int,char等),在函数中使用传值更高效。 2.如果是C++中自定义类,在函数中传递使用引用或者指针传递...
P35101_C语言提高_day01_08_函数封装和数组形参退化为指针_rec 11:54 P35201_C语言提高_day01_09_数组退化为指针补充_rec 03:47 P35301_C语言提高_day01_10_数据类型本质_rec 17:30 P35401_C语言提高_day01_11_给类型起别名_rec 05:50 P35501_C语言提高_day01_12_void类型_rec 08:40 P35601_C语...
了解了C的指针后,理解C++的中的智能指针便不在话下。 数据传递 C语言中有值传递和地址传递的概念。在介绍指针之前,我们先回顾下C语言中这2种数据传递的方式。 值传递:基本数据类型、结构体类型作为函数参数都是值传递。 值传递是简单的数据拷贝,他们的内存地址是不同的。 以函数参数为例,在函数中修改形参的值...
P248248.2.1-4.42智能指针(Av328870924,P248) 20:06 P249249.2.1-4.43重载等号运算符(Av328870924,P249) 15:47 P250250.2.1-4.44重载等于和不等于(Av328870924,P250) 07:34 P251251.2.1-4.45函数对象(Av328870924,P251) 09:11 P252252.2.1-4.46尽量不要重载逻辑与和逻辑或(Av328870924,P252) 04:50 P25325...
1.3)auto不能修饰函数形参。 2)decltype 4、Lambda表达式(匿名函数) 1 2 // Lambda表达式的格式 [capture](params)->ret { body}; 1)capture:捕获的参数列表。 1 2 3 4 5 [a, &b] // 表达式捕获a的值,以及b的引用。 [this] // 捕获this指针。 [&] // 捕获所有外部自动变量的引用。 [=] ...
如上,在函数内部,我们可以按照一般对象的方式来使用这个形参。但是注意,如果你使用引用传参,那么如果你在函数内部修改他的值的话,是会连同函数外部的变量一起修改的,因为引用其实就是外部的变量(其实就是指针,引用其实就是指针的语法糖)。 那么有办法不修改吗?
1). 使用的时候要记得指针的长度. 2). malloc的时候得确定在那里free. 3). 对指针赋值的时候应该注意被赋值指针需要不需要释放. 4). 动态分配内存的指针最好不要再次赋值. 5). 在C++中应该优先考虑使用智能指针. 第二部分:C v.s. C++ 1. C和C++的区别?
C++ 11 中的智能指针有:shared_ptr, unique_ptr 和 weak_ptr。 shared_ptr 的引用计数是存放在堆上的,多个 shared_ptr 的对象的引用计数都指向同一个堆地址。 unique_ptr 中拷贝构造函数和赋值操作符都声明为delete或private。 优先使用 make_shared 和 make_unique 的原因是为了避免内存泄露。参考C++11 中的...
1)智能指针概念:智能指针是封装了指针、及构造函数、析构函数的类。 2)使用智能指针原因:管理指针,防止内存泄漏;当超出该对象的作用域时,类会自动调用析构函数,释放资源; 3)auto_ptr 与 share_ptr 的区别: 3-1)auto_ptr 采用所有权模式,若 p2 = p1,则 p1 所有权会被剥夺,此时 p1 变为野指针; ...