c语言---指针

news/2025/2/2 0:41:29/

指针

前言

记录一个数据对象在内存中的存储位置,需要两个信息:

1、数据对象的首地址。

2、数据对象占用存储空间大小

基础数据类型所占内存空间大小(字节),一个字节代表8个二进制位

char 1

short 2

int 4

long 4

longlong 8

float 4

double 8

指针数据类型

取地址运算符&

可以获取数据对象的首地址和所需存储空间大小

声明指针类型

int  n;
int* pn=&n;

指针类型的值是目标数据对象的首地址!

C语言中通过不同的指针类型来标记目标数据对象的空间大小,那么不同数据类型能否相互赋值呢?

比如:

#include <stdio.h>
​
int main() {
int n;
int *pn=&n;
char y;
char *py=&y;
​pn=py;printf("pn=%u\n",pn);printf("py=%u\n",py);
​return 0;
}
​

由于char和int 类型所占空间大小不一样,不能进行自动转换。

取值运算符*

根据指针存储的首地址和空间大小找到目标数据对象。

注意:%p是指针类型专用站位符,在32以及64位编译条件下都能保证打印正确。

也可以这样使用指针修改所指数据对象,以及访问数据对象。

指针类型大小

注意:char和int存储的是数据范围不同的两种数据,char型占用空间小一点,int占用空间大一点。  
char*和int*存储均为数据对象的地址,它们所占的空间是相同的。

强制转化指针类型

int型指针和char型指针不能使用赋值自动转化,如果使用强制转化。

我们可以看到下面程序,强制将pn转化为char *赋值给pc,再看运行结果,两个首地址、值一致。

指针运算

指针类型地址加减规律

指针类型加n后,首地址向后移动n*步长字节。

指针类型减n后,首地址向前移动n*步长字节。

注意:取值运算符*的优先级高于算术运算符。

数组

访问数组方法

1、数组名【下标】

2、 *(数组名+偏移量) 其中偏移量表示相差元素个数

指针作为参数传递

仅有首地址的指针类型void *

类型为void *的指针仅保存首地址,不保存目标数据对象的空间大小。

void *好处:任意类型的指针都可以直接赋值给它。


http://www.ppmy.cn/news/1085232.html

相关文章

03_nodjs_npm的使用

03 【npm的使用】 1.包和npm 1.1 什么是包 由于 Node 是一套轻内核的平台&#xff0c;虽然提供了一系列的内置模块&#xff0c;但是不足以满足开发者的需求&#xff0c;于是乎出现了包&#xff08;package&#xff09;的概念&#xff1a; 与核心模块类似&#xff0c;就是将一…

websocket基础

下面就以代码来进行说明 1&#xff0c;先导入websocket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 2.编写websocket相关bean管理配置 Config…

ROS-4.创建发布者和订阅者

ros中非长连接的通信使用topic的方式&#xff0c;publisher向topic发布消息&#xff0c;subscriber订阅topic消息&#xff0c;对于非应答模式的通信适合使用该模式&#xff0c;如下图 接下来我们实现一个发布者和订阅者 1. 创建功能包 在实现订阅者和发布者的时候我们需要先…

Shell脚本练习——系统应用相关

显示系统信息 [rootwenzi data]#cat systemInfo.sh #/bin/bash RED"\E[1;31m" GREEN"\E[1;32m" END"\E[0m" echo -e "$GREEN----------------------Host systeminfo--------------------$END" echo -e "HOSTNAME: $REDho…

[管理与领导-67]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 评估你与公司的八字是否相合

目录 前言&#xff1a; 一、概述 二、八字相合的步骤 2.1 企业文化是否相合 2.2.1 企业文化对职业选择的意义 2.2.2 个人与企业三观不合的结果 2.2.3 什么样的企业文化的公司不能加入 2.2 公司的发展前景 2.3 公司所处行业发展 2.4 创始人的三观 2.5 创始人与上司的…

【100天精通Python】Day47:Python网络编程_Web开发:web服务器,前端基础以及静态服务器

目录 1 网络编程与web编程 1.1 网络编程 1.2 web编程 1.3 前后端交互的基本原理 2 Web开发基础 2.1 HTTP协议 2.2 Web服务器 2.3 前端基础 2.3.1 HTML&#xff08;超文本标记语言&#xff09; 2. 3.2 CSS&#xff08;层叠样式表&#xff09; 2.3.3 JavaScript 2.…

【微服务部署】一、使用docker-compose部署Jenkins、SonarQube、PostgreSQL

一、安装 1、编写docker-compose部署Postgres、SonarQube、Jenkins的yml文件jenkins-compose.yml Postgres&#xff1a;作为SonarQube的数据库存储SonarQube&#xff1a;代码质量检查Jenkins&#xff1a;jenkins/jenkins:lts镜像&#xff0c;jenkinsci/blueocean镜像缺少node…

雪花算法生成的ID到前端后精度丢失

最近将id改为雪花算法方式生成&#xff0c;后端使用雪花算法生成id&#xff0c;在返回给前端的时候没有问题&#xff0c;但是在前端使用id反查数据的时候始终查询不到数据。 经过数据跟踪最终定位到是浏览器的问题&#xff0c;因为浏览器无法解析太长的数字&#xff0c;最终导…