标签:play include 初始 变量 它的 namespace pa地址 void 访问
1 // 16-指针.cpp: 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <iostream> 6 #include <climits> 7 8 using namespace std; 9 10 int main() 11 { 12 13 int a = 10; //定义变量后,系统默认会给变量分配一个地址。 14 float b = 9.7f; //将double数据存储在float类型中有可能会遇到数据太大存不下报错。写成9.7f。 15 int c = 20; 16 //怎么取得变量的内存地址呢? 17 //&取得一个变量的内存地址 18 cout << &a << endl; //取得a变量的内存地址。 19 cout << &b << endl; 20 //*从内存地址所对应的内存处取得数据。 21 cout << *(&a) << endl; 22 23 //取地址的时候用&加上变量,取数据时用*加上地址。 24 //对于一个变量(数据)来说在内存中有两个东西,一个是它的内存地址,一个是它的值。 25 26 //指针用来存地址的,分不同的类型,因为不同类型所占的内存空间不同。 27 int* pa = &a;//定义一个int类型的指针,并存储a的地址。 28 float* pb = &b;//定义一个float类型的指针,并存储b的地址。 29 cout << pa << endl; 30 cout << pb << endl; 31 32 //通过指针访问数据。 33 cout <<*pa << endl; 34 cout <<*pa << endl; 35 36 int* p; 37 p = pa; //将pa的地址给p。 38 cout << *p << endl; 39 cout << *pa << endl; 40 41 *pa = 100;//将pa地址的值改成100;pa地址对应变量a,看下a中的值是否已经修改! 42 cout << a <<" "<<*pa<<endl; //都是100 43 44 *p = 300; 45 cout << a << " " << *pa << " " << *p << endl;//前面p=pa,将p和pa的地址等效了。感觉和变量的赋值是有区别的。 46 47 //更新后的C++指针必须要初始化的。可以先给个空。 48 int* p1 = 0; //表示指向空。 49 int* p2 = NULL;//表示指向空。 50 int* p3 = nullptr;//C++11中使用的指向空的方式,推荐使用。 51 cout << p1 << " " << p2 << endl; 52 53 //空类型的指针。 54 void * q; //q可以接收任意类型的地址。 55 q =&a; //虽然&a的值是int类型,但是将a的地址给q后,q还是任意类型的指针。这里和auto不是一个概念。 56 //q = &b 57 //cout << *q << endl; //错误写法,由于q是任意类型的指针,系统不知道需要多大的地址,所以无法输出q指针 58 //需要先进行类型转换 59 cout << *((int*)q) <<endl; //(int*)是将任意类型的p指针转换成int类型的指针,再 *((int*)p)得到指针对用的值。 60 61 //————————通过new申请内存和 通过delete释放内存———————— 62 63 //int* s = nullptr; //定义并初始化一个int类型的指针。 64 int* s = new int; //定义一个int类型的指针并自己开辟一个int类型的内存空间。 65 *s = 100; //给指针s对应的地址的值赋值100 66 cout << *s << endl; //由于这块内存地址没有变量的设定,所以只能通过指针进行访问。 67 68 //变量的值和变量的地址的区别? 69 //变量地址是房间的号码,而变量的值是房间里的东西。可以通过变量取得房间里东西,也可以通过指针取得房间里的东西。指针里存着房间的号码。 70 71 //new出来的内存区域不用了一定要用delete释放掉。通过变量申请到的内存是自动释放的。 72 delete s; //delete+指针名。 73 74 int t; 75 cin >> t; 76 return 0; 77 }
标签:play include 初始 变量 它的 namespace pa地址 void 访问
原文地址:https://www.cnblogs.com/uimodel/p/9346568.html