C语言-指针的基本知识(上)

一、关于内存

存储器:存储数据器件

外存

外存又叫外部存储器,长期存放数据,掉电不丢失数据

常见的外存设备:硬盘、flash、rom、u盘、光盘、磁带

内存

内存又叫内部存储器,暂时存放数据,掉电数据丢失

常见的内存设备:ram、DDR

物理内存:实实在在存在的存储设备

虚拟内存:操作系统虚拟出来的内存,当一个进程被创建的时候,或者程序运行的时候都会分配虚拟内存,虚拟内存和物理内存之间存在映射关系

操作系统会在物理内存和虚拟内存之间做映射。

在32位系统下,每个进程(运行着的程序)的寻址范围是4G,0x00 00 00 00 ~0xff ff ff ff

其中有3G是用户空间,有1G是内核空间。

在写应用程序的,咱们看到的都是虚拟地址。

在运行程序的时候,操作系统会将 虚拟内存进行分区。

1.堆

在动态申请内存的时候,在堆里开辟内存。

2.栈

主要存放局部变量(在函数内部,或复合语句内部定义的变量)。

3.静态全局区

1):未初始化的静态全局区

静态变量(定义的时候,前面加static修饰),或全局变量 ,没有初始化的存在此区 。

2):初始化的静态全局区

全局变量、静态变量,赋过初值的,存放在此区

4.代码区

存放咱们的程序代码

5.文字常量区

存放常量的。

内存以字节为单位来存储数据的,咱们可以将程序中的虚拟寻址空间,看成一个很大的一维的字符数组

本章所接触的内容,涉及到的内存都是虚拟内存,更准确来说是虚拟内存的用户空间

二、指针的相关概念

操作系统给每个存储单元分配了一个编号,从0x00 00 00 00 ~0xff ff ff ff

这个编号咱们称之为地址

指针就是地址

指针变量:是个变量,是个指针变量,即这个变量用来存放一个地址编号

在32位平台下,地址总线是32位的,所以地址是32位编号,所以指针变量是32位的即4个字节。

注意:

1:无论什么类型的地址,都是存储单元的编号,在32位平台下都是4个字节。

即任何类型的指针变量都是4个字节大小

2:对应类型的指针变量,只能存放对应类型的变量的地址

举例:整型的指针变量,只能存放整型变量的地址

扩展

字符变量 char ch; ch占1个字节,它有一个地址编号,这个地址编号就是ch的地址。整型变量 int a; a占4个字节,它占有4个字节的存储单元,有4个地址编号。

Int a=0x00 00 23 4f

Int a=0x00 00 23 4f

三、指针的定义方法

1.简单的指针

数据类型 * 指针变量名;

int * p;//定义了一个指针变量p

在 定义指针变量的时候 * 是用来修饰变量的,说明变量p是个指针变量。

变量名是 p

2.关于指针的运算符

& 取地址 、 *取值&:获取一个变量的地址

*:在定义一个指针变量时,起到标识作用,标识定义的是一个指针变量。除此之外其他地方都表示获取一个指针变量保存的地址里面的内容。

1 #include <stdio.h>

2

3 int main(int argc, char *argv[])

4 {

5 //定义一个普通变量

6 int a = 100;

7 //定义一个指针变量

8 int *p;

9

10 //给指针变量赋值

11 //a的地址保存在p

12 p = &a;

13

14 printf("a = %d %d\n", a, *p);

15 printf("&a = %p %p\n", &a, p);

16

17 return 0;

18 }

扩展:如果在一行中定义多个指针变量,每个指针变量前面都需要加*来修饰

int *p,*q;//定义了两个整型的指针变量p和q

int * p,q;//定义了一个整型指针变量p,和整型的变量q

3、指针大小

在32位系统下,所有类型的指针都是4个字节

因为不管地址内的空间多大,但是地址编号的长度是一样的,所以在32位操作系统中,地址都是四个字节

1 #include <stdio.h>

2

3 int main(int argc, char *argv[])

4 {

5 char *a;

6 short *b;

7 int *c;

8 long *d;

9 float *e;

10 double *f;

11

12 printf("sizeof(a) = %d\n", sizeof(a));

13 printf("sizeof(b) = %d\n", sizeof(b));

14 printf("sizeof(c) = %d\n", sizeof(c));

15 printf("sizeof(d) = %d\n", sizeof(d));

16 printf("sizeof(e) = %d\n", sizeof(e));

17 printf("sizeof(f) = %d\n", sizeof(f));

18

19 return 0;

20 }

21

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/438061.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TCP】重传与超时机制

前言 在网络通信的世界里&#xff0c;传输控制协议&#xff08;TCP&#xff09;扮演着一个至关重要的角色。它确保了数据的可靠传输&#xff0c;就像邮差确保每一封信都能准确无误地送达收件人手中一样。但是&#xff0c;网络环境充满了不确定性&#xff0c;数据包可能会因为各…

站内选品策略:如何利用Shopee平台资源来辅助决策

在Shopee这个电商平台上进行选品时&#xff0c;卖家可以利用平台提供的各种资源和工具来辅助决策。通过这些资源和工具&#xff0c;卖家可以更好地了解市场动态&#xff0c;发现热销产品&#xff0c;并优化自己的商品策略。本文将介绍一些站内选品策略&#xff0c;帮助卖家在Sh…

【Axure高保真原型】随机抽取案例

今天和大家分享随机抽取点餐案例的原型模板&#xff0c;包括2种效果&#xff0c;第一种是手动暂停效果&#xff0c;点击开始后随机抽取食物&#xff0c;手动点击暂停按钮后停止&#xff1b;第二种是自动暂停效果&#xff0c;点击开始按钮后随机抽取食物&#xff0c;并且开始倒计…

美化背景(拼图小游戏)

package Puzzlegame.com.wxj.ui;import javax.swing.*; import javax.swing.border.BevelBorder; import java.util.Random;public class GameJframe extends JFrame { //游戏主界面 //创建一个二维数组//目的&#xff1a;管理数据//加载图片的时候&#xff0c;会根据二维数组中…

大创项目推荐 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

什么是Gitee代码托管服务?怎样用?(码云的使用)

国内代码托管平台 1.网站&#xff1a; Gitee - 基于 Git 的代码托管和研发协作平台

为什么3d合并的模型不能移动---模大狮模型网

当你在3D软件中合并模型后&#xff0c;如果无法移动合并后的模型&#xff0c;可能有以下几个可能的原因&#xff1a; 模型被锁定或冻结&#xff1a;在3D软件中&#xff0c;你可能会将模型锁定或冻结以防止意外的移动或编辑。请确保解锁或解冻模型&#xff0c;这样你就可以自由地…

外汇天眼:Alpha Group International为股票回购计划拨款高达2,000万英镑

Alpha Group International plc&#xff0c;一家为企业和机构提供金融解决方案的公司&#xff0c;宣布计划启动股票回购程序&#xff0c;以购买每股面值为0.2便士的普通股。 该公司已经从其现金储备中拨款高达2,000万英镑用于回购计划。购买的普通股将被保留在公司的资本中。 …

阿里巴巴1688商品详情API:从入门到精通的深入指南(五)

一、引言 阿里巴巴是中国最大的电商平台之一&#xff0c;而1688则是其批发采购平台。近年来&#xff0c;随着电子商务的快速发展&#xff0c;越来越多的企业开始需要从1688平台获取商品详情数据。为了满足这一需求&#xff0c;阿里巴巴提供了1688商品详情API。本文将详细介绍如…

Day02-课后练习1-参考答案(数据类型和运算符)

文章目录 巩固题1、按步骤编写代码&#xff0c;效果如图所示&#xff1a;2、按步骤编写代码&#xff0c;效果如图所示&#xff1a;3、强制类型转换练习&#xff0c;效果如图所示&#xff1a;4、按步骤编写代码&#xff0c;效果如图所示&#xff1a;5、计算时间6、华氏度转摄氏度…

C++STL之map、set的使用和模拟实现

绪论​&#xff1a; “我这个人走得很慢&#xff0c;但是我从不后退。——亚伯拉罕林肯”&#xff0c;本章是接上一章搜索二叉树中红黑树的后续文章&#xff0c;若没有看过强烈建议观看&#xff0c;否则后面模拟实现部分很看懂其代码原理。本章主要讲了map、set是如何使用的&am…

2024阿里云和腾讯云的第一战打响:搭建《幻兽帕鲁》私服游戏

为了搭建《幻兽帕鲁》游戏私服&#xff0c; 2024年阿里云 VS 腾讯云的第一场战争开始了…… 事情是这样的&#xff1a; 1月19日&#xff0c;最离谱新游 《幻兽帕鲁》突然爆火了&#xff0c;这是一款日本开发商展耗费4年开发的冒险类游戏&#xff0c;这款戏一推出就迅速俘获了…