C语言笔记14

指针1

        在C语言中给内存单元的编号起了个名字叫做指针,通俗来说就是地址。(内存单元编号=地址=指针

1.指针变量与地址

int a=10; 

int* p=&a;

  *  说明了这里p的是指针变量;int*说明p是一个整形指针;int说明p指向的对象a是一个整形;&a是取出a的地址; 总的来说就是取出a的地址存放在p里。

2.解引用操作符 *

*和指针变量搭配起来就是解引用,就是取出指针变量里的数值。

int a=10;int* p=&a;int b=*p;→ b=10      用一张图描述如下

3.指针变量的大小

指针变量的⼤⼩取决于地址的⼤⼩
32位平台下地址是32个bit位(即4个字节)
64位平台下地址是64个bit位(即8个字节)

即不管是指针类型是char*、short*、int*  、double * 32位平台下大小为4Byte,64位平台下大小为8Byte

4.指针+-整数

比如: char* 类型的指针变量+1跳过1个字节, int* 类型的指针变量+1跳过了4个字节。这就是指针变量的类型差异带来的变化。指针+1,其实跳过1个指针指向的元素。指针-1也是如此,只是相反,向后退。

结论:指针的类型决定了指针向前或者向后⾛⼀步有多⼤(距离)
ps:指针-指针表示获取两个地址之间的元素个数。
5.const修饰指针变量
int * p;//没有const修饰
int const * p;或const int * p;//const 放在*的左边做修饰  p的地址可以修改,存放的内容不可以修改
int * const p;//const 放在*的右边做修饰  p的内容可以修改,存放的地址不可以修改
int const * const p;//const 放在*的两边做修饰  p的内容和地址都不可以修改
总结:
• const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。
但是指针变量本⾝的内容可变。
• const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指
向的内容,可以通过指针改变。
• const 放在*的两边做修饰,修饰的是指针变量本⾝和针指向的内容,保证内容和地址都不可以修改。
6.野指针
概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
//野指针形成的原因:
#include <stdio.h>
//1.指针没有初始化
int main1()
{
	int* p;//局部变量指针未初始化,默认为随机值
	* p = 20;
	return 0;
}
//2.指针越界访问
int main2()
{
	int arr[10] = { 0 };
	int* p = &arr[0];
	int i = 0;
	for (i = 0; i <= 11; i++)
	{
		//当指针指向的范围超出数组arr的范围时,p就是野指针
	 * (p++) = i;
	}
	return 0;
}
//3.指针指向的空间释放
int* test()
{
	 int n = 100;
	 return &n;
 }
int main()
 {
	int* p = test();
	printf("%d\n", *p);//test()中n是一个局部变量,使用完之后n变量申请的空间就会被释放
	return 0;
 }

ps:指针变量不再使⽤时,及时置NULL,指针使⽤之前检查有效性 →指针变量=NULL

7.传值调⽤和传址调⽤

见之前写的博客C语言笔记8-CSDN博客

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

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

相关文章

SpringBoot 实现对提供的接口进行 AES (加密,解密)

业务来源&#xff1a; 最近工作中&#xff0c;领导要求给别的项目组的小伙伴提供几个接口&#xff0c;要求对接口的参数进行解密操作&#xff0c;然后对返回的数据进行加密操作。 这时我想到了AES AES 是对称加密算法&#xff0c;优点&#xff1a;加密速度快&#xff1b;缺点…

生产环境磁盘变更方案

datanode磁盘扩容(1人天) 扩容磁盘 1.1 扩容前检查、新盘初始化 确定block副本统计正常,无丢块,无under-replicated 块 后台执行命令检查 hdfs dfs fsck / 无异常可进行以下步骤进行磁盘扩容 新盘初始化 ##格式化新盘,命令示例: mkfs.xfs /dev/sdc##挂载新盘,命令示…

哔哩哔哩直播通用榜单系统

榜单系统的定位和业务价值 榜单遍布B站直播相关业务的各个角落&#xff0c;直播打赏、直播间互动、付费玩法、互动玩法、活动、主播PK、语聊房、人气主播排名、高价值用户排名、增值集卡、up主充电等等&#xff0c;在这众多的业务场景中&#xff0c;我们能看到各种各样的榜单。…

Allegro如何输出各层PCB视图的PDF文件

如何输出各层PCB视图的PDF文件 1、说明 用Allegro设计好PCB后&#xff0c;有时需要出各层的PDF文档出来进行汇报和展示&#xff0c;这时就需要将各层的平面视图全部以PDF的形式加载出来&#xff0c;具体方法如下。 2、PDF文件的输出方法&#xff08;以四层板为例&#xff09; …

网上跳蚤市场|基于SSM+vue的网上跳蚤市场系统的设计与实现(源码+数据库+文档)

网上跳蚤市场系统 目录 基于SSM&#xff0b;vue的网上跳蚤市场系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台登录模块 5.2.1管理员功能 5.2.2会员功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…

如何内网穿透,远程访问内网设备

文章目录 0.前言1.准备工作2.内网穿透原理3.配置公网服务器的frp5.配置访问内网主机6.配置win10的远程桌面访问&#xff08;win11类似&#xff09;7.参考资料 0.前言 最近想研究一些新东西&#xff0c;公司的机器不敢乱搞&#xff0c;公司测试的服务器安装软件太多&#xff0c…

SQL Server服务启动缓慢或崩溃问题分析

关键词&#xff1a;SQL Server故障解决、服务启动缓慢、服务崩溃、日志文件清理 阅读建议&#xff1a;如果您遇到的是SQL Server服务启动缓慢或无法响应的问题&#xff0c;可以重点阅读文章的第一部分&#xff1b;如果是服务崩溃或重启的问题&#xff0c;可以重点关注第二部分。…

React 第三十章 React 和 Vue 描述页面的区别

面试题&#xff1a;React 和 Vue 是如何描述 UI 界面的&#xff1f;有一些什么样的区别&#xff1f; 标准且浅显的回答&#xff1a; React 中使用的是 JSX&#xff0c;Vue 中使用的是模板来描述界面 前端领域经过长期的发展&#xff0c;目前有两种主流的描述 UI 的方案&#xf…

如何在 Linux 上检查 CPU 和硬盘温度

为了更好地监测您的Linux系统的硬件健康状况&#xff0c;如CPU与硬盘温度、风扇转速等关键指标&#xff0c;采用lm_sensors与hddtemp这两款强大工具是明智之选。以下是关于这些工具的详尽指南&#xff0c;包括它们的功能介绍、安装步骤以及如何配置lm_sensors&#xff0c;旨在为…

C++的相关知识集

1、C概述 1 两大编程思想 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效&#xff0c;简洁&#xff0c;快速和可移植的传统。 2 起源 与c语言一样&#xff0c;c也是在贝尔实验室诞生的&#xff0c;Bjarne Stroustrup(本贾尼斯特劳斯特卢普)在2…

自动化工具 Ansible:playbooks 剧本编写

目录 前言 一、playbooks 剧本概述 1、playbooks 剧本概念 2、playbooks 剧本组成部分 3、playbooks 剧本特点与优势 二、ansible-playbook 命令 三、playbooks 剧本简单实例 1、编写 apache 的 yum 安装部署脚本 2、编写 nginx 的 yum 安装部署剧本 四、playbooks 定…

【云原生】Kubeadm搭建K8S

一、部署Kubernetes 实验环境 服务器主机名IP地址主要组件k8s集群master01 etcd01master01192.168.10.100kube-apiserver kube-controller-manager kube-schedular etcdk8s集群node01 etcd02node01192.168.10.101kubelet kube-proxy docker flannelk8s集群node02 etcd03nod…

【源码+文档+调试讲解】微信小程序家政项目小程序

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序家政项目小程序的开发全过程。通过分析微信小程序家政项目小程序管理的不足&#xff0c;创建了一个计算机管理微信小程序家政项目小程序的方案。文章介…

Android 使用RecyclerView实现商品列表

实现步骤&#xff1a; 创建数据模型 创建一个表示商品的类&#xff0c;例如ProductInfo创建适配器 创建一个继承自RecyclerView.Adapter的适配器类&#xff0c;用于处理RecyclerView中的数据和视图在主页面布局文件中添加RecyclerView创建Item 布局文件在你的Activity或Fragme…

Vue3实战笔记(19)—封装菜单组件

文章目录 前言一、封装左侧菜单导航组件二、使用步骤三、小彩蛋总结 前言 在Vue 3中封装一个左侧导航菜单组件是一项提升项目结构清晰度和代码可复用性的关键任务。这个过程不仅涉及组件的设计与实现&#xff0c;还需考虑其灵活性、易用性以及与Vue 3新特性的紧密结合。以下是…

yarn 安装以及报错处理

前一种报错是由于没有安装yarn导致的&#xff0c;使用以下命令即可安装&#xff1a; npm install -g yarn 如果成功安装&#xff0c;将显示Yarn的版本号。 yarn --version 第二种报错是因为系统上的执行策略限制导致的。执行策略是一种安全功能&#xff0c;用于控制在计算机…

案例分享 I 千视协助Lentia City 购物中心实现轻量化、数字化转型

随着文娱活动的日益复苏&#xff0c;Lentia City作为奥地利最受欢迎的社交和文化聚集地之一&#xff0c;正逐渐成为人们追逐乐趣和交流的热门去处。这里丰富多彩的音乐表演和活动吸引着大量人群&#xff0c;为城市注入了生机和活力。 这些活动不仅仅是简单的娱乐&#xff0c;它…

IT行业的现状与未来发展趋势

目录 前言1. 当前IT行业的技术革新1.1 量子计算1.2 虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09; 2. 新兴技术在不同行业中的应用前景2.1 云计算和大数据2.2 物联网&#xff08;IoT&#xff09;和5G通信2.3 区块链 3. 新兴技术对教育体系的挑战和机…

5分钟用 Python 写一个软件,快速入门 PySimpleGUI

大家好&#xff0c;很多人都想写一个自己的桌面程序&#xff0c;那么PySimpleGUI 是一个非常好的选择&#xff0c;它旨在简化 GUI&#xff08;图形用户界面&#xff09;的创建过程。它基于几种流行的 Python GUI 库&#xff0c;如 tkinter、Qt、WxPython 和 Remi&#xff0c;但…

Hive的join操作

假设有三张表&#xff0c;结构和数据如下&#xff1a;-- 创建表 test_a,test_b,test_c CREATE TABLE test_a( id int, name string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY \t;--分别导入数据到三个表中 --test_a 1 a1 2 a2 4 a4 --test_b 1 b1 3 b3 4 b4 --…