一切皆为地址

C语言用变量来存储数据,用函数来定义一段功能代码,它们最终都要放到内存中供 CPU 调用。

数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存存储的是数据还是代码。当程序被加载到内存后,操作系统会给不同的内存块指定不同的权限,拥有读取和执行权限的内存块就是代码,而拥有读取和写入权限(也可能只有读取权限)的内存块就是数据。

CPU访问内存时需要的是地址,而不是变量名或函数名。程序在执行过程中会告知 CPU 要执行的代码以及要读写的数据的地址。变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。

何为指针

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。这个编号就是指针(Pointer)。

也就是说,指针是一个变量,其值为另一个变量的地址(Address),即变量在内存中字节的编号。

指针变量的声明

与其他变量或常量一样,在使用指针存储其他变量地址之前,需对其进行声明。指针变量声明的一般形式为:

type *var_name;

其中 type 是指针的类型,它必须是一个有效的 C 数据类型,var_name 是指针变量的名称。

如下图所示,x是一个整型变量,其值为8,p是一个整型指针,指向x。使用&操作符取得变量x的地址,将其赋给p,从而使p指向变量x的地址;使用*操作符即可访问该地址存储的变量值。

用来声明指针的星号 * 与乘法所使用的星号是相同的。但在这里,星号是用来声明这个变量是指针。

char *pc; /* 一个字符型指针 */

int *pi; /* 一个整型指针 */

float *pf; /* 一个浮点型指针 */

double *pd; /* 一个 double 型指针 */

指针变量的大小

在32位计算机中,一个指针变量所占的字节数通常是4,在64位系统中通常为8。

如下图所示,在64位机器上,指针变量所占的字节数都是8。

sizeof是C/C++中的一个操作符(operator),其作用是返回一个对象或者类型所占的内存字节数。

c++ 非空指针 写入访问权限冲突_初识C语言指针相关推荐

  1. 写入访问权限冲突_全面介绍 Linux 权限

    知道如何控制用户对文件的访问是一项基本的系统管理技能. -- Alex Juarez(作者) 了解 Linux 权限以及如何控制哪些用户可以访问文件是系统管理的一项基本技能. 本文将介绍标准 Linu ...

  2. qt 引发了异常: 写入访问权限冲突。this 是 0x7FF700000000。

    刚刚好像没有搜索到和我出现一样运行报错的帖子,所以记录一下. 但是可惜刚才疯狂出错没有截图,有点懒得退回再截图一遍了.(不要骂我啊我只是记录一下) 再贴一遍vs反馈(没有报错的时候以为成功了结果谁知悲 ...

  3. 异常:写入访问权限冲突

    前言 这次朋友写代码时遇到解决不了的问题.让我帮忙看看.我觉得这个问题还挺好的,所以写下来记录一下,也算是给自己做一个笔记. 异常 引发了未经处理的异常:写入访问权限冲突. The variable ...

  4. c++ 读取访问权限冲突_关于Windows文件6项基础权限的一些设置!

    之前,我们讨论过设置Windows文件[始终]以图标显示,其实,在Windows中,关于文件的操作还有很多,比如设置文件权限.权限绝对是一个值得深究的话题,为不同的账户设置权限很重要,可以防止重要文件 ...

  5. c++ 读取访问权限冲突_南京课工场IT培训:解析文件共享及访问方式

    各位小伙伴大家好! 我们接上一篇的文件权限操作,接下来和各位小伙伴解析文件共享的操作方法. 我们首先使用管理员身份进入server2016系统,然后对我们之前在E盘中创建的abc的文件夹进行设置,右键 ...

  6. 引发了未经处理的异常:读取访问权限冲突_从零开始学Python:23课-文件读写和异常处理

    一下子想起来,我的Python100天教程没更新了,赶紧补上~ 这期就还接着前面的讲哈.另外就是想跟伙伴们了解下,就是跟我要到Python视频教程的伙伴,你们学的怎么样了,可以给我个反馈哈! 实际开发 ...

  7. C++报错:引发了未经处理的异常:写入访问权限冲突, p 是 0xCCCCCCCC

    今天我和0xCCCCCCCC杠上了,连着遇到了两次关于0xCCCCCCCC的错误.所以先给大家简单介绍一下,到底什么是0xCCCCCCCC? 一.0xCCCCCCCC 在 Debug 模式下,VC 会 ...

  8. c语言 指针_初识C语言指针

    一切皆为地址 C语言用变量来存储数据,用函数来定义一段功能代码,它们最终都要放到内存中供 CPU 调用. 数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存存储的是数据还是代码.当 ...

  9. VS2019报错写入/读入访问权限冲突

    VS2019报错写入/读入访问权限冲突 如下图:当我们在使用指针的时候,会出现写入或者读入权限冲突的情况 情景一:写入访问权限冲突 解决方案: 在使用指针的时候,最好是对其进行初始化,哪怕是将指针指向 ...

最新文章

  1. 124第七章—逻辑卷简介及在图形界面进行管理配置
  2. LeetCode 25 K个一组翻转链表
  3. Property #39;sqlSessionFactory#39; or #39;sqlSessionTemplate#39; are required
  4. 简单纯文字浮动信息-Tooltip
  5. Hadoop分布式系统的安装部署
  6. linux网络编程之并发服务器的三种实现模型 (超级经典)
  7. 12306 抢票项目霸榜 GitHub,标星即将破万
  8. python求解多元方程最优解_Python实现梯度下降算法求多元线性回归(二)
  9. matlab滤除100hz,关于滤波器滤波的问题,要求滤除3000Hz以上,但滤除后只剩下1000Hz以内的...
  10. 大数据在推荐系统中的作用
  11. python爬取饿了么数据_爬取饿了么商铺信息
  12. H5编辑器H5-Dooring2.30更新指南
  13. 英语语音篇 - 自然拼读大全
  14. 真子集的三种表示方法的区别(⊂与⫋ 与⊊)
  15. 5000元的电视机推荐 5000元75寸高性价比电视推荐
  16. c 语言 蒙特卡洛程序,蒙特卡洛步骤学习(一)
  17. 深信服 EDR终端检测响应平台 0day RCE 漏洞
  18. Mac 电脑python 升级3.7版本
  19. 幸福藏在糊涂里(深度好文)
  20. matlab中voa,matlab 运算出错 function [w1,w2,VoA,VoB,VoC,VoD,VoE,VA1,VB1,VC1,

热门文章

  1. UIPATH 常用操作
  2. 简单实现 iframe 全屏显示
  3. 会议笔记(七):多模态情感计算的前沿讨论
  4. 立体视觉跟踪(一):Stereo Vision-based Semantic 3D Object and Ego-motion Tracking for Autonomous Driving
  5. 递归和迭代_用 递归 与 迭代 实现汉诺塔问题(PHP实现)
  6. html中ing标签怎么写,HTML标签
  7. 使用KiCad插件,将PCB焊接可视化
  8. vue+echarts 后台获取数据_vue+element+echarts 响应式后台管理系统,了解一下?
  9. 《CANOpen》 学习笔记5
  10. Steam游戏黑屏与游戏直接安装方法