IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言笔记第七天(指针) -> 正文阅读

[C++知识库]C语言笔记第七天(指针)

目录

指针概述

指针的取值范围(步长)

?指针+1


指针概述

#include <stdio.h>

int main()
{
	//物理内存:真是的内存
	//虚拟内存:系统虚拟的内存(映射)
	//指针操作的时虚拟内存(大部分情况下)
	//32位系统的寻址范围 0x00 00 00 00 到 0xff ff ff ff(一个十六进制四位,两个十六进制一字节)
	// 	   32/8=4 一字节8位 32位也就是四个字节,指针大小的由来
	//0xff ff ff ff也就是32位最大的寻址,换算下来差不多4G,这也是32位系统内存即使大于4G也用不到的原因
	//计算机是以字节为单位存储的
	//总的来说内存地址就是指针,指针就是内存地址

	//变量num存储的是10
	int num = 10;

	//变量p存储的是num的地址
	//变量p存储的是num的首地址
	//int(四字节)决定这个指针的取值范围(也叫指针的步长),类型决定解析方式
	int* p = &num;

	//他们两个输出的结果是一样的
	printf("&num = %p\n", &num);
	printf("p = %p\n", p);
	
	//可以使用*(解引用运算符)来取出地址内的数据
	printf("*p = %d\n", *p);	//10 p存的是num的地址,*p就是按照p所存的地址去找到数据

	//将指针p解引用后赋值可以改变num,但是不会改变地址
	*p = 20;
	printf("num = %d\n", num);
	printf("*p = %d\n", *p);
	printf("&num = %p\n", &num);
	printf("p = %p\n", p);

	//将num赋值可以改变*p,同样不会改变地址
	num = 30;
	printf("num = %d\n", num);
	printf("*p = %d\n", *p);
	printf("&num = %p\n", &num);
	printf("p = %p\n", p);
	//*p == num 值 
	//p ==&num 地址

	//输出的是变量num的地址
	printf("p = %p\n", p);
	//输出的是(指针)变量p的地址
	printf("&p = %p\n", &p);

	return 0;
}

指针的取值范围(步长)

#include <stdio.h>

int main(int agec, char** argv)
{
	//四字节 两个十六进制一个字节 这个很重要
	int num = 0x11223344;

	//int取四字节
	int* p = &num;
	printf("%#x\n", *p);	//0x11223344

	//short取两字节
	short* p2 = &num;
	printf("%#x\n", *p2);	//0x3344

	//char取一字节
	char* p3 = &num;
	printf("%#x\n", *p3);	//0x44

	//说下大端小端,
    //大端只有一些服务器才会使用,大多数都是小端,至于为什么会有大端小端的问题这是历史遗留问题
	//大端(低字节存高位数据,高字节存低位数据)
	//小端(低字节存低位数据,高字节存高位数据)

	return 0;
}

小端(低字节存低位数据,高字节存高位数据)


?指针+1

#include <stdio.h>

int main(int argc, char** argv)
{
	int num = 0;

	int* p = &num;
	//每次地址不一样,但是效果一样,都是加类型的字节数
	//+4
	printf("%u\n", p);	//10221728
	printf("%u\n", p + 1);	//10221732
	
	short* p2 = &num;
	//+2
	printf("%u\n", p2);		//10221728
	printf("%u\n", p2 + 1);		//10221730



	char* p3 = &num;
	//+1
	printf("%u\n", p3);		//10221728
	printf("%u\n", p3 + 1);		//10221729

	return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:29:29  更:2021-09-08 10:31:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:57:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码