指针--指针变量的定义和初始化
存放变量的地址需要一种特殊类型的变量,这种特殊的数据类型就是指针(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。
相关文章:
指针--指针变量的定义和初始化
存放变量的地址需要一种特殊类型的变量,这种特殊的数据类型就是指针(Pointer)。 具有指针类型的变量,称为指针变量,它时专门用于存储变量的地址值和变量。 其定义形式如下: 类型关键字 * 指针变量名&#x…...
Web基本概念
一、前言 World Wide Web的简称,是一个由许多互相链接的超文本组成的系统,通过互联网访问 (为用户提供信息) 静态网页 仅适用于不能经常更改内容的网页; 动态网页 网络编程技术创建的页面;通过在传统的静态…...
Niagara—— Texture Sample 与 Particle Subuv 区别
目录 一,Texture Sample 二,Particle Subuv 一,Texture Sample 此节点是最基本的采样节点,依据UV坐标来采样Texture; MipValueMode,设置采样的Mipmap Level; None,根据当前Texture…...
如何在食品行业运用IPD?
食品是我国重要的民生产业之一,是保障和满足人民群众不断增长消费需求的重要支撑。食品指各种供人食用或者饮用的成品和原料以及按照传统既是食品又是药品的物品,包括加工食品,半成品和未加工食品,不包括烟草或只作药品用的物质。…...
如何用pandas进行条件分组计算?
Pandas提供了强大的分组聚合功能,可以轻松进行条件分组计算和统计。本文通过一个例子,展示如何使用Pandas的.groupby()和.agg()方法进行条件分组计算。 准备数据 假设有这样一个字典数据: dict { 姓名: [张三,李四,王五&#x…...
tomcat如何调优,涉及哪些参数?
Tomcat是一个流行的开源Java Servlet容器,用于部署和管理Java Web应用程序。调优Tomcat可以提高性能、并发处理能力和稳定性。以下是一些常见的Tomcat调优参数和技巧: 1.调整内存参数: -Xms:指定Tomcat启动时的初始堆内存大小。 -…...
java培训机构学校教学教务选课管理平台springboot+vue
近年来,随着培训机构机构规模的逐渐增大,人工书写的方式已经不能满足如此庞大的数据。为了更好的适应信息时代的高效性,一个利用计算机来实现培训机构教务管理工作的系统将必然诞生。基于这一点,设计了一个培训机构教务管理系统&a…...
半导体(TSS)放电管的两大选购注意事项及选型小策略
固体放电管,是以半导体工艺制作而成的,因此我们也称为半导体(TSS)放电管,它常在电路中并联使用,具备伏安特性。 TSS放电管在电路中类似开关,在正常工作时不动作,但一般被保护电路受到…...
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
增加了多进程的方式执行测试代码,对代码改动比较大 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单片机的内外时钟切换问题
绪论 本文主要讲解单片机的时钟系统的相关知识,并进行超频测试,同时介绍如何在STM32F0单片机上进行内外时钟的切换,在不使用外部晶振或者外部晶振不启动时自动切换内部时钟的方法。 一、杂谈 问题来源于群里的一次问答: 诚然&…...
centos6.10环境下安装php7.4(基于WLNMP包)
centos6系统已经被官网停止维护,要安装软件必须用第三方的RPM包,下面使用yum安装php7.4正式版,当前基于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实证研究探索挑战性数学问题
深度学习自然语言处理 原创作者:wkk 考虑到自然语言在许多科学和工程领域表达的数学问题的丰富性,使用大语言模型(LLM)来解决数学问题是一项有趣的研究工作。今天给大家介绍一篇微软研究院联合欧美高校关于如何使用GPT-4解决数学问题的研究论文。 之前的…...
如何配置IP地址
一.自动获取IP 1.dhclient 2.ifconfig 通过这个命令可以查看系统有几块网卡和网卡的IP。 如果您的Linux有多块网卡,那么在Linux中它会显示成eth1, eth2 依此类推 二.手动配置IP 如果您的虚拟机不能自动获取IP,那么只能手动配置,配置方法为&am…...
CentOS + Nginx 环境自动申请和部署Let‘s Encrypt免费SSL证书教程
文章目录 步骤 1:安装Certbot工具步骤 2:配置Nginx服务器步骤 3:生成SSL证书步骤 4:配置Nginx以使用SSL证书步骤 5:重新加载Nginx配置步骤 6:自动续期证书 本文介绍如何在 CentOS Nginx 环境下,…...
浅谈对BI工具价值的看法
浅谈对BI工具价值的看法 BI的定义看法 百度百科的定义: 商业智能(Business Intelligence,简称:BI),又称商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术…...
创建定时任务
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%?
在数据分析的实际场景中,冷热数据往往面临着不同的查询频次及响应速度要求。例如在电商订单场景中,用户经常访问近 6 个月的订单,时间较久远的订单访问次数非常少;在行为分析场景中,需支持近期流量数据的高频查询且时效…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
