C语言——指针2

目录

  • 符号
  • *
    • 1、声明指针变量
    • 2、获取指针变量的值
    • 3、修改指针变量所指向的值
    • 4、作为运算符使用
  • &(地址运算符)
    • 1、获取变量的地址
    • 2、作为位运算符使用
    • 3、作为逻辑运算符使用
  • 问题
    • *p代表的是一个值

符号

*用于指针变量的操作,它的作用有:
1、声明指针变量;
2、获取指针变量的值;
3、修改指针变量所指向的值;
4、作为运算符使用。
& 用于获取变量的地址,它的作用有:
1、获取变量的地址;
2、作为位运算符使用;
3、作为逻辑运算符使用。

在 C 语言中,* 和 & 是两个常用的操作符,它们分别表示指针运算符和地址运算符。

*

1、声明指针变量

在 C 语言中,可以使用 * 来声明一个指针变量,例如:

int *p;

这个语句定义了一个名为 p 的指针变量,它可以指向一个 int 类型的变量。

2、获取指针变量的值

可以使用 * 来获取一个指针变量所指向的地址上的值,例如:

int a = 10;
int *p = &a;
printf(“%d\n”, *p);

这个程序会输出 10,因为 *p 表示获取 p 所指向地址上的值,即 a 的值。

3、修改指针变量所指向的值

可以使用 * 来修改一个指针变量所指向的地址上的值,例如:

int a = 10;
int *p = &a;
*p = 20;
printf(“%d\n”, a);

这个程序会输出 20,因为 *p = 20 表示将 p 所指向地址上的值修改为 20,即将 a 的值修改为 20。

4、作为运算符使用

运算符也可以作为乘法运算符使用,例如:
int a = 2, b = 3;
int c = a * b;

这个程序会将 a 和 b 相乘的结果赋值给 c。

&(地址运算符)

& 是 C 语言中的一个运算符,用于获取变量的地址。它可以用于以下几种情况:

1、获取变量的地址

可以使用 & 来获取一个变量的地址,例如:

int a = 10;
int *p = &a;

这个程序中,&a 表示获取变量 a 的地址,然后将这个地址赋值给指针变量 p。

2、作为位运算符使用

& 运算符还可以作为位与运算符使用,例如:

int a = 3, b = 5; int c = a & b;

这个程序会将 a 和 b 的二进制位进行按位与运算,然后将结果赋值给 c。

3、作为逻辑运算符使用

& 运算符还可以作为逻辑与运算符使用,例如:

int a = 3, b = 5;
int c = (a > 2) & (b < 4);

这个程序中,(a > 2) & (b < 4) 表示将 a > 2 和 b < 4 的结果进行逻辑与运算,然后将结果赋值给 c。

问题

*p代表的是一个值

*p代表的是一个值

p = &a; 和 *p = &a; 在C语言中有非常大的区别,它们是完全不同的操作,下面是它们各自的含义:

p = &a;
这行代码是将变量a的地址赋值给指针p。此时,p指向了a的存储位置。你可以通过解引用p(即使用*p)来访问或修改a的值。

*p = &a;
这行代码尝试将变量a的地址赋值给指针p所指向的内存位置。但是,这里有几个问题:

如果p没有事先被初始化为指向一个有效的、可以写入的内存地址,那么这行代码会导致未定义行为,通常是段错误(segmentation fault),因为你在尝试写入一个随机的或未分配的内存地址。
即使p已经指向了一个有效的内存地址,这行代码也是错误的,因为*p代表的是一个值,而不是一个地址。你不能将地址赋值给一个值。*p应该是一个与p指向类型相同的值(在这个例子中是int类型的值),而不是一个地址。
总结来说,p = &a; 是正确的,用于将指针p指向变量a的地址;而 *p = &a; 是错误的,因为试图将一个地址赋值给指针所指向的值,这在C语言中是不允许的。正确的做法应该是先确保p指向一个有效的内存地址,然后再对*p进行赋值操作,但赋的值应该是一个与p指向类型相同的值,而不是地址。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Echarts水球图的配置项,掌握后极其简单。

Echarts水球图&#xff08;Liquid Fill Gauge&#xff09;是 Echarts 中的一种数据可视化图表类型&#xff0c;用于展示一种类似水球的效果&#xff0c;可以直观地显示一个数值相对于总量的比例。水球图通常用于展示进度、完成率、占比等数据&#xff0c;具有直观、美观的特点&…

Win linux 下配置adb fastboot

一、Win配置adb & fastboot 环境变量 主机&#xff1a;Win10&#xff0c;除了adb fastboot需要设置变量之外&#xff0c;驱动直接安装即可 win下adb fastboot 下载地址&#xff1a;https://download.csdn.net/download/u012627628/89215420 win下qcom设备驱动下载地址&a…

反向海淘代购系统是什么?如何为国外的人代购中国电商平台的商品?

随着全球化的深入发展&#xff0c;跨境购物已成为越来越多人的日常选择。然而&#xff0c;传统意义上的“海淘”主要是指中国消费者从国外电商平台购买商品。近年来&#xff0c;随着中国电商市场的蓬勃发展&#xff0c;越来越多的海外消费者也开始对中国商品产生浓厚兴趣&#…

Memecoin再迎爆发:是本轮牛市大反弹的开始吗?

在加密货币市场上&#xff0c;Memecoin再度掀起了一波热潮&#xff0c;引发了人们对于本轮牛市是否即将到来的猜测和期待。近期&#xff0c;诸如BONK、PEPE和POPCAT等Memecoin的价格出现了显著的上涨&#xff0c;涨幅之大令人瞠目。这一现象引发了广泛的讨论&#xff0c;人们开…

C++之入门

文章目录 1、前言2、C的关键字2.1C语言32关键字2.2C关键字(63个) 3、命名空间4、输入输出(cout、cin)4、缺省参数5、函数重载6 引用6.1 引用的定义6.2 引用的特性6.3引用的使用场景6.4 实际例子6.5、总结 7、内联函数8、auto关键字9、nullptr关键字 1、前言 C语言是结构化和模…

恶意软件狩猎新途径:使用.NET元数据分析跟踪恶意软件

本文由Blaze于2024年3月25日发表于其个人博客网站上。 就在不久前&#xff0c;我们意外发现了一个PureCrypter样本&#xff0c;而PureCrypter则是一款适用于各种类型恶意软件&#xff08;例如Agent Tesla和RedLine&#xff09;的加载器和混淆处理工具。深入分析之后&#xff0c…

BDC报错信息查看

1.在事务代码st22的报错信息中下载本地文件 2.打开本地文件查看报错信息 3.在事务代码se91中输入对应消息类和消息编号 4.查看报错信息&#xff0c;根据报错信息取解决问题

GaussDB数据库SQL系列-聚合函数

背景 在这篇文章中&#xff0c;我们将深入探讨GaussDB数据库中聚合函数的使用和优化。聚合函数是数据库查询中非常重要的工具&#xff0c;它们可以对一组值执行计算并返回单个值。例如&#xff0c;聚合函数可以用来计算平均值、总和、最大值和最小值。 这些功能在数据分析和报…

数据结构(七)---树

目录 一.树的基本概念 二.树的性质 三.二叉树 1.二叉树的基本概念 2.特殊的二叉树 &#xff08;1&#xff09;满二叉树 &#xff08;2&#xff09;完全二叉树 &#xff08;3&#xff09;二叉排序树 &#xff08;4&#xff09;平衡二叉树 3.二叉树的性质 4.完全二叉树…

【ARMv9 DSU-120 系列 -- Utility bus 详细介绍 2】

文章目录 ARM DSU-120DSU-120 Utiity BusCluster and core PPUPPU寄存器的访问性PPU寄存器的作用系统组件基地址ARM DSU-120 DSU-120 Utiity Bus 在ARMv9架构中,DSU-120(Dynamic Shared Unit 120)是一个关键组件,用于管理核心和系统组件之间的通信与协作。某些系统组件寄存…

嵌入式Linux driver开发实操(二十一):linux device driver basic设备驱动程序基础

linux的架构框图: 内核空间是内核(即操作系统的核心)执行(即运行)并提供其服务的地方。 用户空间是执行用户应用程序的地方。 内核模块是可以根据需要加载和卸载到内核中的代码片段。它们扩展了内核的功能,而无需重新启动系统。自定义代码可以通过两种方法添加到Linux内…

『FPGA通信接口』串行通信接口-IIC(1)接口协议

文章目录 1.IIC简介1.1 IIC概述1.2 总线结构 2.IIC通信协议2.1消息种类2.2通信过程 3.开发思路4.仿真分析5.传送门 1.IIC简介 1.1 IIC概述 IIC即 Inter-Integrated Circuit(集成电路总线&#xff09;&#xff0c;是由 Philips 半导体公司在八十年代初设计出来的一种简单、双向…

字节跳动(社招)三面算法原题

TikTok 喘息 继上月通过强制剥离 TikTok 法案后&#xff0c;美国众议院在当地时间 20 日下午以 360 票赞成 58 票反对通过了新的法案&#xff1a;剥离 TikTok 的期限由生效后 165 天调整至 270 天之内&#xff0c;即今年 11 月的美国总统大选后。 之前我们讲过&#xff0c;TikT…

【文件上传与包含漏洞综合利用】DVWA-文件上传-难度:High

实验过程和结果 步骤1&#xff1a;尝试直接上传php木马&#xff0c;失败&#xff0c;截图如下&#xff1a; 步骤2&#xff1a;将php木马后缀改为jpeg尝试上传&#xff0c;依旧失败&#xff0c;截图如下&#xff1a; 步骤3&#xff1a;将真实的jpeg图片1.jpeg上传&#xff0c;成…

云原生Service Mesh服务网格简单介绍

serviceMesh是什么 Service Mesh是一个用于处理服务间通信的基础设施层&#xff0c;旨在实现云原生应用复杂服务拓扑中的可靠请求传递。其基本构成是一组与应用一起部署的轻量级网络代理&#xff0c;这些代理对应用来说是透明的。Service Mesh通过统一的方式来控制和处理服务间…

基于openwrt交叉编译opencv4.9.0版本

源码包的获取 源码获取有两种方式&#xff0c;一种是通过编译时在makefile指定它的git地址&#xff0c;在编译时下载&#xff0c;这种很依赖网速&#xff0c;网速不好时&#xff0c;编译会失败。另一种是我们将源码的压缩包下载到本地&#xff0c;放到我们的SDK中&#xff0c;…

UltraScale+的10G/25G Ethernet Subsystem IP核使用

文章目录 前言一、设计框图1.1、xxv_ethernet_01.2、xxv_ethernet_0_sharedlogic_wrapper1.3、xxv_ethernet_0_clocking_wrapper1.4、xxv_ethernet_0_common_wrapper 二、IP核配置三、仿真四、上板测速五、总结 前言 前面我们学习了很多基于XILINX 7系列的高速接口使用&#x…

CC攻击频发,企业如何做好网络安全,该怎么防护能免遭CC攻击?

在当前网络现状下&#xff0c;随着信息技术的飞速发展&#xff0c;网络攻击手段也愈发多样化和复杂化。其中&#xff0c;CC攻击作为一种针对Web应用层的拒绝服务攻击&#xff0c;其危害日益凸显&#xff0c;对企业和个人造成了严重的威胁。下面我们就从多个角度详细分享关于CC攻…

SpringCloudAlibaba入门学习笔记20240408~20240424

跟学b站“图灵架构师”SpringCloudAlibaba入门教程 系统架构演化进程 单体应用架构>垂直应用架构>分布式架构>SOA架构>微服务架构 1、针对微服务架构&#xff1a; 如何管理众多小服务&#xff1f;(服务治理 注册中心[服务注册 发现 剔除])nacos 众多小服务之间如…

智能驾驶+网络安全

在智能驾驶场景下&#xff0c;安全问题一直是一个持续热点。 针对车机模块不被黑客利用Linux的漏洞攻击&#xff0c;可以采取以下几种方式来提高安全性&#xff1a; 安全设计和防护&#xff1a;在设计车机模块时&#xff0c;需要考虑安全性&#xff0c;并采取相应的安全防护措施…
最新文章