admin 管理员组文章数量: 894082
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
版权声明:本文标题:p56 p57 p58 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687328740h90133.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论