admin管理员组

文章数量:821310

p56 p57 p58

p56 指针的定义和使用

1.指针的作用:可以通过指针间接访问内存(指针是存放地址的)

*内存编号是从0开始记录的,一般用16进制数字表示

*可以利用指针变量保存地址

指针的定义语法:数据类型 * 变量名;

#include<iostream>
using namespace std;int main()
{//指针的定义:int hehe = 10;cout << "hehe = " << hehe << endl;int* p;//让指针定义变量hehe的地址p= &hehe;//不用指针输出变量hehe的地址:用取址运算符cout << "hehe的地址为:" << (int)&hehe << endl;//用指针输出变量hehe的地址:cout << "p输出的是" << (int)p << endl;  //用(int)强制转成整型输出地址//用*p 间接访问内存空间//指针前加一个✳ 代表解引用:找到指针指向的内存中的数据。cout << "*p输出的是" << *p << endl;system("pause");return 0;
}

!!用*p 间接访问内存空间
    //指针前加一个✳ 代表解引用:找到指针指向的内存中的数据。

*p也可以间接修改内存中的数据

int main()
{
int hehe = 100;
int *p = &hehe ;
cout<<"hehe的值为:"<< hehe<<endl;
cout<<"*p的值为:"<< *p<<endl;
//通过*p修改指针指向的内存中的值
*p = 500;
cout<<"hehe的值为:"<< hehe<<endl;
// 这时指针解引用修改了内存中的值:  输出hehe等于500
}

P57 :指针所占内存空间

不管是什么类型的数据:
在64位操作系统下指针类型统一占8个字节
在32位操作系统下指针类型统一占4个字节
 

#include<iostream>
using namespace std;
int main()
{int hehe = 10;int* p = &hehe;cout << "int *p占多少内存空间 " << sizeof(int*) << endl;cout << "double *p占多少内存空间 " <<sizeof(double*) << endl;cout << "char *p占多少内存空间 " << sizeof(char*) << endl;cout << "flaot *p占多少内存空间 " << sizeof(float*) << endl;cout << "long *p占多少内存空间 " << sizeof(long*) << endl;cout << "long long *p占多少内存空间 " << sizeof(long long*) << endl;system("pause");return 0;
}
/*不管是什么类型的数据:
在64位操作系统下指针类型统一占8个字节
在32位操作系统下指针类型统一占4个字节
*/

p58 :空指针

空指针:指针变量指向内存中编号为0的空间

(当一开始不知道初始化什么的时候可以用)

用途:初始化指针变量

注意:空指针指向的内存空间不可以访问(用户没有权限访问)

* 0~255之间的内存编号是系统占用的,因此不允许用户访问

定义:

int *p = NULL;

编译器提示错误:引发了异常: 读取访问权限冲突。
p 是 nullptr。

 P59 :野指针

:指针变量指向越界的内存空间(访问了没有权限的内存空间)

报错:

#include<iostream>
using namespace std;
int main()
{// 指针变量p指向内存地址编号为 0x1100的空间int* p = (int*)0x1100;  //因为这个内存空间不是自己定义开辟的//访问野指针cout << *p << endl;/*报错内容:引发了异常: 读取访问权限冲突。p 是 0x1100。*/;system("pause");return 0;
}

**空指针和野指针都不是我们自己申请的空间,因此不要访问。

本文标签: p56 p57 p58