当前位置: 首页 > news >正文

指针--指针变量的定义和初始化

存放变量的地址需要一种特殊类型的变量,这种特殊的数据类型就是指针(Pointer)
具有指针类型的变量,称为指针变量,它时专门用于存储变量的地址值和变量。
其定义形式如下:
类型关键字 * 指针变量名;
其中,类型关键字代表指针变量要指向的变量的数据类型,即指针变量的基类型(Base Type),
例如:int *pa;
我们从后往前将该语句读为:pa是一个指针变量,它指向一个整形变量。
那么该如何定义两个具有相同类型的指针变量呢?
注意,要使用下面的语句来定义两个具有相同基类型的指针变量:
int *pa,*pb;//定义了可以指向整形数据的指针变量pa和pb
而不可以使用
int *pa,pb;//这是定义可以指向整形数据的指针变量pa和整形变量pb;
并且,指针变量的定义只是声明了指针变量的名字及其所能指向的数据类型,并没有说明变量究竟指向了哪里。
例1:使用指针变量在屏幕上显示变量的地址。
在这里插入图片描述
在这里插入图片描述第二次运行发现,pa、pb、pc的值发生了变化,
这是因为指针未被初始化,意味着指针变量的值是一个随机值,我们无法预知它会指向哪里,它很肯会乱指一气。

#include <stdio.h>int main(void)
{int a=0,b=1;char c='A';int *pa,*pb;char *pc;printf("a  is  %d, &a is  %p, pa  is %p\n",a,&a,pa);printf("b  is  %d, &b is  %p, pb  is %p\n",b,&b,pb);printf("c  is  %c, &c is  %p, pc  is %p\n",c,&c,pc);} 

为了避免忘记指针初始化给系统带来的潜在危险,防止指针乱指一气,习惯在定义指针变量的同时将其初始化为NULL(在stdio.h中定义为零值的宏)。于时,修改程序如下:

#include <stdio.h>int main(void)
{int a=0,b=1;char c='A';int *pa=NULL,*pb=NULL;char *pc=NULL;printf("a  is  %d, &a is  %p, pa  is %p\n",a,&a,pa);printf("b  is  %d, &b is  %p, pb  is %p\n",b,&b,pb);printf("c  is  %c, &c is  %p, pc  is %p\n",c,&c,pc);} 

在这里插入图片描述
为了使指针指向变量之前必须将其指向确定的内存单元。于是,将上面的程序修改为:

#include <stdio.h>int main(void)
{int a=0,b=1;char c='A';int *pa,*pb;char *pc;pa=&a;pb=&b;pc=&c;printf("a  is  %d, &a is  %p, pa  is %p, &pa  is %d\n",a,&a,pa,*pa);printf("b  is  %d, &b is  %p, pb  is %p, &pb  is %d\n",b,&b,pb,*pb);printf("c  is  %c, &c is  %p, pc  is %p, &pc  is %c\n",c,&c,pc,*pc);//最后一个打印的是指向地址的值printf("a  is  %d, &a is  %p, pa  is %p, &pa  is %p\n",a,&a,pa,&pa);printf("b  is  %d, &b is  %p, pb  is %p, &pb  is %p\n",b,&b,pb,&pb);printf("c  is  %c, &c is  %p, pc  is %p, &pc  is %p\n",c,&c,pc,&pc);//最后一个打印的是指向的地址printf("%d\n",sizeof(pa));printf("%d\n",sizeof(pb));printf("%d\n",sizeof(pc));} 

指向某变量的指针变量,通常称为某变量的指针,虽然指针变量中存放的是变量的地址值,二者在数值上相等,但在概念上变量的指针并不等同于变量的地址。变量的地址是一个常量,不能对其进行赋值。而变量的指针是一个变量,其值是改变的。
指针变量只能向同一基类型的变量,否则将引起warning。

注意:
1.可以在定义指针变量的同时对指针进行变量进行初始化。
例如:int * pa = &a;
这个变量声明语句中的星号 *只是一个指针类型说明符,不是间接寻址运算符。所以,该语句不能理解为将&a的值赋给pa所指向的变量。

正确理解:定义一个可以指向整型数据1的指针变量pa,并用整型变量a的地址值对指针变量pa进行初始化,从而使指针变量pa具体的指向了整型变量a。

相关文章:

指针--指针变量的定义和初始化

存放变量的地址需要一种特殊类型的变量&#xff0c;这种特殊的数据类型就是指针&#xff08;Pointer&#xff09;。 具有指针类型的变量&#xff0c;称为指针变量&#xff0c;它时专门用于存储变量的地址值和变量。 其定义形式如下&#xff1a; 类型关键字 * 指针变量名&#x…...

Web基本概念

一、前言 World Wide Web的简称&#xff0c;是一个由许多互相链接的超文本组成的系统&#xff0c;通过互联网访问 &#xff08;为用户提供信息&#xff09; 静态网页 仅适用于不能经常更改内容的网页&#xff1b; 动态网页 网络编程技术创建的页面&#xff1b;通过在传统的静态…...

Niagara—— Texture Sample 与 Particle Subuv 区别

目录 一&#xff0c;Texture Sample 二&#xff0c;Particle Subuv 一&#xff0c;Texture Sample 此节点是最基本的采样节点&#xff0c;依据UV坐标来采样Texture&#xff1b; MipValueMode&#xff0c;设置采样的Mipmap Level&#xff1b; None&#xff0c;根据当前Texture…...

如何在食品行业运用IPD?

食品是我国重要的民生产业之一&#xff0c;是保障和满足人民群众不断增长消费需求的重要支撑。食品指各种供人食用或者饮用的成品和原料以及按照传统既是食品又是药品的物品&#xff0c;包括加工食品&#xff0c;半成品和未加工食品&#xff0c;不包括烟草或只作药品用的物质。…...

如何用pandas进行条件分组计算?

Pandas提供了强大的分组聚合功能&#xff0c;可以轻松进行条件分组计算和统计。本文通过一个例子&#xff0c;展示如何使用Pandas的.groupby()和.agg()方法进行条件分组计算。 准备数据 假设有这样一个字典数据: dict { 姓名: [张三&#xff0c;李四&#xff0c;王五&#x…...

tomcat如何调优,涉及哪些参数?

Tomcat是一个流行的开源Java Servlet容器&#xff0c;用于部署和管理Java Web应用程序。调优Tomcat可以提高性能、并发处理能力和稳定性。以下是一些常见的Tomcat调优参数和技巧&#xff1a; 1.调整内存参数&#xff1a; -Xms&#xff1a;指定Tomcat启动时的初始堆内存大小。 -…...

java培训机构学校教学教务选课管理平台springboot+vue

近年来&#xff0c;随着培训机构机构规模的逐渐增大&#xff0c;人工书写的方式已经不能满足如此庞大的数据。为了更好的适应信息时代的高效性&#xff0c;一个利用计算机来实现培训机构教务管理工作的系统将必然诞生。基于这一点&#xff0c;设计了一个培训机构教务管理系统&a…...

半导体(TSS)放电管的两大选购注意事项及选型小策略

固体放电管&#xff0c;是以半导体工艺制作而成的&#xff0c;因此我们也称为半导体&#xff08;TSS&#xff09;放电管&#xff0c;它常在电路中并联使用&#xff0c;具备伏安特性。 TSS放电管在电路中类似开关&#xff0c;在正常工作时不动作&#xff0c;但一般被保护电路受到…...

05-使用Vue3 + Vue CLI 实现前端模块的搭建

1、环境准备 流程:安装node得到npm,使用npm安装vue cli(脚手架),使用vue cli创建项目。 Vue CLI版本和Node版本有关,用Node V12只能下载到Vue CLI V4.X,必须用Node V18才能下载到Vue CLI V5.X IDEA支持配置多个版本的Node,类似配置多个JDK。 node.js安装 1、官网下载…...

3.1 增加多进程执行playwright

增加了多进程的方式执行测试代码&#xff0c;对代码改动比较大 1、case case目录依然是自动生成 2、config dir_collection.py新增了配置 mkdir_collections [case,log,img, ] del_collections [results,report ] del_regex temp3、data/img/log/resource/video data/im…...

关于单片机的时钟浅谈及STM32F103/F030单片机的内外时钟切换问题

绪论 本文主要讲解单片机的时钟系统的相关知识&#xff0c;并进行超频测试&#xff0c;同时介绍如何在STM32F0单片机上进行内外时钟的切换&#xff0c;在不使用外部晶振或者外部晶振不启动时自动切换内部时钟的方法。 一、杂谈 问题来源于群里的一次问答&#xff1a; 诚然&…...

centos6.10环境下安装php7.4(基于WLNMP包)

centos6系统已经被官网停止维护&#xff0c;要安装软件必须用第三方的RPM包&#xff0c;下面使用yum安装php7.4正式版&#xff0c;当前基于WLNMP提供的一键安装包来安装 1、添加epel源 yum install epel-release yum install epel-release 2、添加WLNMP一键安装包源 rpm -iv…...

Qt使用第三方库openssl进行RSA加密解密操作详解

一、openssl库的编译,可以参考文档: https://blog.csdn.net/liang19890820/article/details/51658574/ 因为我这里使用的是windows操作系统,可以直接下载exe格式的安装文件,直接安装即可,就包含了我们需要的头文件和库文件,省去了编译操作。exe安装文件下载地址: htt…...

激发数学思维:GPT-4实证研究探索挑战性数学问题

深度学习自然语言处理 原创作者&#xff1a;wkk 考虑到自然语言在许多科学和工程领域表达的数学问题的丰富性&#xff0c;使用大语言模型(LLM)来解决数学问题是一项有趣的研究工作。今天给大家介绍一篇微软研究院联合欧美高校关于如何使用GPT-4解决数学问题的研究论文。 之前的…...

如何配置IP地址

一.自动获取IP 1.dhclient 2.ifconfig 通过这个命令可以查看系统有几块网卡和网卡的IP。 如果您的Linux有多块网卡&#xff0c;那么在Linux中它会显示成eth1, eth2 依此类推 二.手动配置IP 如果您的虚拟机不能自动获取IP&#xff0c;那么只能手动配置&#xff0c;配置方法为&am…...

CentOS + Nginx 环境自动申请和部署Let‘s Encrypt免费SSL证书教程

文章目录 步骤 1&#xff1a;安装Certbot工具步骤 2&#xff1a;配置Nginx服务器步骤 3&#xff1a;生成SSL证书步骤 4&#xff1a;配置Nginx以使用SSL证书步骤 5&#xff1a;重新加载Nginx配置步骤 6&#xff1a;自动续期证书 本文介绍如何在 CentOS Nginx 环境下&#xff0c…...

浅谈对BI工具价值的看法

浅谈对BI工具价值的看法 BI的定义看法 百度百科的定义&#xff1a; 商业智能&#xff08;Business Intelligence&#xff0c;简称&#xff1a;BI&#xff09;&#xff0c;又称商业智慧或商务智能&#xff0c;指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术…...

创建定时任务

import schedule import timedef task():print("Im working...")if __name__ __main__:schedule.every(10).seconds.do(task) # 每10秒一次schedule.every(10).minutes.do(task) # 10分钟一次schedule.every().hour.do(task) # 每小时schedule.every().day.at(&q…...

MyBatis的使用、Spring AOP、Spring事务

一、MyBatis 的使用 1、环境配置 1.1、建库建表 -- 创建数据库 drop database if exists mycnblog; create database mycnblog DEFAULT CHARACTER SET utf8mb4;-- 使⽤数据数据 use mycnblog;-- 创建表[⽤户表] drop table if exists userinfo; create table userinfo(id in…...

Apache Doris 冷热分层技术如何实现存储成本降低 70%?

在数据分析的实际场景中&#xff0c;冷热数据往往面临着不同的查询频次及响应速度要求。例如在电商订单场景中&#xff0c;用户经常访问近 6 个月的订单&#xff0c;时间较久远的订单访问次数非常少&#xff1b;在行为分析场景中&#xff0c;需支持近期流量数据的高频查询且时效…...

背包九讲(C++)

目录 背包问题 1.0/1背包 2.完全背包 3.多重背包 4.分组背包 5.混合背包问题 6.背包问题求具体方案 7.背包问题求方案数 8.二维费用的背包问题 9.有依赖的背包问题 背包问题 任何背包问题都有01背包的影子&#xff0c;甚至均可以化为01背包的问题(特殊性)&#xff0…...

SteamAutoCrack:终极指南!如何3步实现游戏免Steam启动?

SteamAutoCrack&#xff1a;终极指南&#xff01;如何3步实现游戏免Steam启动&#xff1f; 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack SteamAutoCrack是一款专业的游戏自动破解工具…...

从标注到部署:用LabelImg和MaixHub,在K210上跑通你的第一个“汽车识别”模型全流程

从零构建汽车识别模型&#xff1a;LabelImg标注与K210部署实战指南 在智能硬件开发领域&#xff0c;K210芯片以其高效的AI推理能力成为边缘计算的热门选择。本文将带您完整走通一个汽车识别项目的全流程——从数据标注到模型部署。不同于市面上泛泛而谈的教程&#xff0c;我们聚…...

AI账号自动化管理工具集:从注册到运维的全流程实战指南

1. 项目概述&#xff1a;一个AI账号自动化管理的“军火库”如果你正在批量使用ChatGPT、Claude、Gemini这些AI服务&#xff0c;或者在做一些相关的开发和研究&#xff0c;那你肯定遇到过这些让人头疼的问题&#xff1a;注册账号需要接码、管理几十上百个API密钥手忙脚乱、临时邮…...

Jenkins Job DSL与Pipeline集成:现代DevOps工作流的10个最佳实践

Jenkins Job DSL与Pipeline集成&#xff1a;现代DevOps工作流的10个最佳实践 【免费下载链接】job-dsl-plugin A Groovy DSL for Jenkins Jobs 项目地址: https://gitcode.com/gh_mirrors/jo/job-dsl-plugin Jenkins Job DSL插件是现代DevOps自动化中不可或缺的工具&…...

STM32F103软件模拟IIC驱动0.96寸OLED:从零搭建与界面交互优化

1. 硬件准备与接线指南 拿到STM32F103核心板和0.96寸OLED模块时&#xff0c;我第一反应是翻看引脚定义。这块4针OLED通常采用IIC接口&#xff0c;接线其实特别简单&#xff0c;只需要4根线&#xff1a;VCC、GND、SCL、SDA。但要注意供电电压&#xff0c;我刚开始用5V供电结果屏…...

DevOps与MCP协议:构建AI增强型智能运维工作台

1. 项目概述&#xff1a;DevOps与MCP的交汇点最近在GitHub上看到一个挺有意思的项目&#xff0c;叫rohitg00/awesome-devops-mcp-servers。如果你是做DevOps或者对AI辅助编程感兴趣&#xff0c;这个仓库绝对值得你花时间研究。简单来说&#xff0c;这是一个精心整理的列表&…...

学术研究者的数字工具困境:如何打通文献管理与知识沉淀的壁垒?

学术研究者的数字工具困境&#xff1a;如何打通文献管理与知识沉淀的壁垒&#xff1f; 【免费下载链接】notero A Zotero plugin for syncing items and notes into Notion 项目地址: https://gitcode.com/gh_mirrors/no/notero 在当今数字化研究时代&#xff0c;学术工…...

FastbootEnhance:Windows平台终极Android刷机工具箱完整指南

FastbootEnhance&#xff1a;Windows平台终极Android刷机工具箱完整指南 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance 在Android设备刷机和定制…...

Yeti社区插件生态解析:如何利用现有资源快速扩展平台功能

Yeti社区插件生态解析&#xff1a;如何利用现有资源快速扩展平台功能 【免费下载链接】yeti Your Everyday Threat Intelligence 项目地址: https://gitcode.com/gh_mirrors/ye/yeti Yeti作为一款强大的威胁情报平台&#xff08;Your Everyday Threat Intelligence&…...