C语言 -指针 与解引用*
符号 * 的三种概念:a = a*b; //乘法 *两边都是变量 ->乘法概念 √ int *p ;//标识符 和 变量之间 => 申明概念 √ //申明了一个指针p*p =100; //指向概念 √
;
指针有三个值,最关系其中两个值 p和*pp: 指针p,存放的是a的地址 指向目标的地址
*p: p指向目标的内容
(不常用)
&p:存放的也是地址,是指针的地址
理解:1. p本身存的是a的地址 地址没有大小概念 只有高低概念2. 解引用 * 就像解开盒子的秘密一样 盒子里面装的是a的操作地址 当我解密这个操作地址 我就找到a啦3.对*p的操作其实就是对a的操作4. *&p = >&a;
问题:
1. 一个变量可能占有多个字节 指针指向哪?
32位系统 指针开辟4字节
指针:指向的是首地址
2. 首地址是哪个呢?
默认指向低地址
3. 既然都只存放4字节 那为什么会有double指针 int指针呢?
解释:指针不存放double或者int类型 主要是以下能力
3-1.对指针的约束能力 :指针+1能力 不同类型+1能力不同
3-2.对类型的解释不同:如何去哪个部分解开这块内存 *p
4. 为什么指针是4个字节?
内存中有9个通用寄存器:eax ebx ecx edx
esp ebp esi edi eip
eip 地址寄存器:寄存代码的地址
在32位操作系统里面 保护模式 地址寄存器 是32位bit位
从0x 00000000 - 0xFFFFFFFF;
32位 32bit位 一个字节8bit位 所以32位只能拿4字节编址
所以 指针是4个字节
5.地址线不是36吗?
36条地址线 保护模式 只用了32条 访问32位
实模式 用了36条 此时可以访问64G
int main(){int ar[10] = {12,23,34,45,56,67};int *p = &ar[0];for(int i = 0;i<6;i++){printf("%x => %d \n",p,*p);p = p+1; }
因为是int类型的指针 指针+1能力:所以数组内存每次+4 十六进制 62fde0 => 12 62fde4 => 2362fde8 => 3462fdec => 4562fdf0 => 5662fdf4 => 67
3-1 对指针的约束能力 :指针+1能力 理解: type *p = NULL; //type可能是任何类型 p = p+n;
=> p = p +sizeof(type) * n;// 如果是double 那就是 n = 8 每次移动8个字节
假设这里了有一块内存,存放如下地址
0001 0000
0110 0000
0000 1100
0110 0000
0100 0000
0010 0000
0010 0001
0001 0001
0001 0100
char *cp; char *ip; double *dp
都存放首地址0001 0000
解引用*cp内存是 0001 0000解引用*ip的内存是0001 0000 0110 00000000 11000110 0000
解引用*dp的内存是0001 0000 0110 00000000 11000110 00000100 00000010 00000010 00010001 0001
C语言 -指针 与解引用*相关推荐
- C语言 指针的解引用详解
目录 实例1: 实例2: 指针的定义方式是: type + * char* 类型的指针是为了存放 char 类型变 量的地址. short* 类型的指针是为了存放 short 类型变量的地址. i ...
- 【C语言指针】 指针+-整数、指针-指针、解引用、指针数组、二级指针、结构体声明、初始化、传参
目录 一.指针 1.指针是什么 1.1.一个单元1个字节 2.指针和指针类型 2.1.指针类型的意义 ① 解引用 ② + -整数 例:把每个整形里放1 每个字节里放1 总结: 3.野指针 3.1.野指 ...
- c语言 指针函数 详解,[NOTE-C]C语言指针详解(一)
C语言指针让一切想法变成可能,强转和指针可以看做一项呼风唤雨的利器,但是C语言中指针应用又需要格外的小心,其更灵活的利用内存,因为不当的应用可能引起各种异常,这篇文章就是让我们一起来认识C指针,更好的 ...
- c语言的指针详解ppt,最全的C语言指针详解.ppt
最全的C语言指针详解.ppt 第6章 指针,6.1 指针定义与使用 6.2 指针与函数 6.3 指针与数组 6.4 指针与字符串 6.5 指针数组与多级指针 6.6 指针与动态内存分配 6.7 指针的 ...
- C语言指针详解(全解)—— 前篇
关于指针的基本概念及相关运算写在了上一篇博客 C语言指针详解(初级)_Seinrich的博客-CSDN博客 本篇博客来详细的解说一下指针,深入探讨指针 一.指针与const const修饰的变量为常变 ...
- ##二维数组指针的解引用
##二维数组指针的解引用 方法: int (*p)[5]; //定义一个二维数组指针,它的元素是一个包含5个int类型的一维数组 int array[3][5]; p = array; //指针指向二 ...
- C语言(宏,内存,地址,指针,解引用)
#include <stdio.h> #define NUM 100 int Add(int x,int y) { int z = x + y; return z; } 宏 ...
- c语言 指针_C 语言指针详解
(给CPP开发者加星标,提升C/C++技能) 作者:C语言与CPP编程 / 自成一派123(本文来自作者投稿) 1为什么使用指针 假如我们定义了 char a='A' ,当需要使用 'A' 时,除了直 ...
- C语言指针详解(新手入门推荐)
目录 指针的理解 字符指针:char * 无类型指针void * 指针数组 数组指针 函数指针 回调函数 函数指针数组 练习 指针和数组笔试题解析 指针的理解 关于指针,我先讲一个故事:一个侦探在案发 ...
最新文章
- 英国更注重人工智能基础性研究
- 深度神经网络:WX+B vs XW+B,作者原文已经删除,转载过来了~~~
- Python库引用import多种用法及比较
- 研发效能提升最佳实践的探索
- JBOSS7启动与关闭
- php 获取域名部分,PHP 获取顶级域名 获取域名的函数 parseHost()
- poj3616 基础的动态规划算法 《挑战程序设计竞赛》
- 软件测试面试-测试的目的是什么?【高频】
- ubuntu中查找文件后高亮_vim查找替换及取消高亮
- 基于Ext JS的模块化应用框架搭建及开发
- SignalR 服务器系统配置要求
- JExcel - 学习总结(1)
- [Unity3D]水族馆游戏教程一
- android官网自定义相机,android native.js camera自定义相机
- 【北邮国院大三上】电子商务法(e-commerce law)知识点整理——Banking Lawe-Payment
- win10系统重装之u盘装系统,u盘安装win10系统
- U盘安装原版XP系统全攻略
- MAGIC文件格式解析
- 移动光猫怎么设置虚拟服务器设置,移动光猫自带无线和拨号功能,光猫与路由器如何设置网络才最优?...
- Jackson配置大全