* 号靠近数据类型,和靠近变量名, 号靠近数据类型,和靠近变量名,有什么区别
文章目录
- 一、int* age 和 int *age,* 号靠近数据类型,和靠近变量名,有什么区别:
- 1. `int* age`:
- 2. `int *age`:
- 二、int& age 和 int &age,& 号靠近数据类型,和靠近变量名,有什么区别:
- 1. `int& age`:
- 2. `int &age`:
- 三、在C++中,&符号的用法:
- 1. 在变量前面使用&符号表示取变量的地址。例如:
- 2. 在函数参数列表中使用&符号表示引用。例如:
- 四、在C++中,* 符号的用法:
- 1. 在指针变量前面使用*号表示该变量是一个指针。例如:
- 2. 在函数参数列表中使用*号表示引用。例如:
一、int* age 和 int age, 号靠近数据类型,和靠近变量名,有什么区别:
在C和类似的编程语言中,int* age 和 int *age 都是声明一个指向整数(int)类型的指针变量,但它们在语法上稍微有些不同,涉及到指针变量的声明和解析时会有一些微妙的影响。
1. int* age:
在这种写法中,int* 被视为一个整体,表示“指向整数的指针”。这个语法强调了变量 age 是一个指向整数的指针类型。你可以通过 age 指针来访问整数值。
int* age; // 声明一个指向整数的指针变量
int value = 25;
age = &value; // 将指针指向整数变量 value
2. int *age:
在这种写法中,int 和 *age 被分开,这也是一种常见的写法。这个语法中,*age 被视为一个指针变量,指向一个整数。这种写法也能清楚地表示 age 是一个指向整数的指针变量。
int *age; // 声明一个指向整数的指针变量
int value = 30;
age = &value; // 将指针指向整数变量 value
总的来说,这两种写法在大多数情况下是等效的,但是在涉及多个变量声明时可能会有一些微妙的差异。例如:
int* age, height; // 这里 age 是指针,height 是整数变量,可能会产生误导
在这种情况下,为了避免歧义,建议使用以下写法:
int *age, height; // 明确地指示 age 是指针,height 是整数变量
无论你选择哪种写法,重要的是保持一致,并且在代码中使用明确的命名和注释来清楚地表达你的意图。
二、int& age 和 int &age,& 号靠近数据类型,和靠近变量名,有什么区别:
在C++中,int& age 和 int &age 都涉及到引用(reference)的声明,但它们在语法上有一些微妙的差异,涉及到引用变量的声明和使用时会产生一些影响。
1. int& age:
在这种写法中,int& 被视为一个整体,表示“整数引用”。这个语法强调了变量 age 是一个整数引用。引用在声明时必须立即初始化为引用某个已经存在的整数变量。
int value = 25;
int& age = value; // 声明一个引用,将其引用到整数变量 value
在此例中,age 现在是 value 的引用,任何对 age 的更改实际上都会直接反映在 value 上。
2. int &age:
在这种写法中,int 和 &age 被分开,&age 被视为一个引用变量,引用一个整数。这种写法也能清楚地表示 age 是一个整数引用。
int value = 30;
int &age = value; // 声明一个引用,将其引用到整数变量 value
这两种写法在大多数情况下是等效的,都声明了一个整数引用。然而,在涉及多个变量声明时,它们可能会稍微有些不同,类似于指针的情况。
int& age, height; // 这里 age 是引用,height 是整数变量,可能会产生误导
在这种情况下,为了避免歧义,建议使用以下写法:
int &age, height; // 明确地指示 age 是引用,height 是整数变量
无论你选择哪种写法,重要的是保持一致,并且在代码中使用明确的命名和注释来清楚地表达你的意图。同时要注意,在C++中,引用一旦初始化后不能再引用其他变量,因此在使用引用时要格外小心。
三、在C++中,&符号的用法:
1. 在变量前面使用&符号表示取变量的地址。例如:
c++int x = 10;
int *p = &x; // 取变量x的地址,将其赋值给指针p
在上面的代码中,变量x的地址被赋给了指针p。
2. 在函数参数列表中使用&符号表示引用。例如:
c++void func(int &ref) {ref = 20; // 修改引用ref的值,相当于修改了传递给函数的实际参数
}
int main() {int x = 10;func(x); // 传递变量x的引用给函数cout << x << endl; // 输出20,因为函数内部修改了引用ref的值,相当于修改了变量x的值return 0;
}
在上面的代码中,函数func接受一个引用作为参数,通过修改引用的值,相当于修改了传递给函数的实际参数。
总之,&符号靠近数据类型和靠近变量名时的用法不同,需要根据具体的上下文来判断。
四、在C++中,* 符号的用法:
在C++中,*号也有两种不同的用法,一种是用在指针变量前面,表示该变量是一个指针,另一种是用在函数参数列表中,表示引用。
1. 在指针变量前面使用*号表示该变量是一个指针。例如:
c++int x = 10;
int *p = &x; // 取变量x的地址,将其赋值给指针p
在上面的代码中,变量p是一个指向int类型的指针。
2. 在函数参数列表中使用*号表示引用。例如:
c++void func(int *ptr) {*ptr = 20; // 通过指针修改实际参数的值
}
int main() {int x = 10;func(&x); // 传递变量x的地址给函数cout << x << endl; // 输出20,因为函数内部通过指针修改了实际参数的值return 0;
}
在上面的代码中,函数func接受一个指向int类型的指针作为参数,通过指针修改了实际参数的值。
至于String& name和String& name的区别,实际上是语法错误。因为在C++中,标识符不能包含空格,所以String& name是无效的语法。正确的语法是String& name或者std::string& name,表示该变量是一个std::string类型的引用。
相关文章:
* 号靠近数据类型,和靠近变量名, 号靠近数据类型,和靠近变量名,有什么区别
文章目录 一、int* age 和 int *age,* 号靠近数据类型,和靠近变量名,有什么区别:1. int* age:2. int *age: 二、int& age 和 int &age,& 号靠近数据类型,和靠近变量名,有什么区别&a…...
为了做好农业,拼多多请来顶尖农业专家当独立董事
8月29日,拼多多发布截至6月30日的2023年第二季度业绩报告。财报显示,拼多多集团今年第二季度收入为523亿元,同比增长66%,远超市场预期。 财报发布的同时,拼多多还宣布,其董事会已聘任荷兰瓦赫宁根大学终身…...
Linux服务器安装部署MongoDB数据库 – 【无公网IP远程连接】
文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 前言 MongoDB是一个基于分布式文件存储的数据库。由 C 语言编写,旨在为 WEB 应用提供可扩展的高…...
Python+PIL+qrcode实现二维码自由—普通二维码+彩色二维码+logo二维码+动态二维码(附完整代码)
有时候我们需要自己制作一个二维码,然后进行打印下来,或者说在二维码中提前写上一段话比如搞笑的话,然后印在衣服上,然后穿出去玩!的🤣 那么今天我们分享一下制作二维码的几种方式: 哎&#x…...
【Spring Data JPA】JPA 常用查询函数
文章目录 前言函数查询表格 前言 函数查询的表格参考了官网的 2.7.3 版本的文档,JPA 的这种函数式查询方法改动不大,如果想知道更多的复杂查询,可以参考这篇文章 【Spring Data JPA】基于 JpaRepository 增删改查 官方文档地址 Spring Data…...
Visual Studio 2022的MFC框架——AfxWinMain全局对象和InitInstance函数
我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。 在看这篇帖子前,请先看我的另一篇帖子《Visual Studio 2022的MFC框架——应用程序向导》。 当程序调用了CWinApp类的构造…...
【网络】多路转接——poll | epoll
🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 书接上文五种IO模型 | select。 poll | epoll 🍧poll🧁认识接口🧁简…...
音视频 ffmpeg命令视频录制(Windows)
先安装dshow软件 Screen Capturer Recorder, 项目地址:https://sourceforge.net/projects/screencapturer/files/ 然后查看可用设备名字:ffmpeg -list_devices true -f dshow -i dummy [dshow 0509d6c0] DirectShow video devices (some ma…...
【拾枝杂谈】从游戏开发的角度来谈谈原神4.0更新
君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,结合最近的学习内容和以后自己的目标,今天又开了杂谈这个新坑,分享一下我在学习游戏开发的成长和自己的游戏理解,当然现在还是一枚…...
QT设置mainwindow的窗口title
QT设置mainwindow的窗口title 在QT程序中,通常会有**aaaa-[bbbbbbb]**这种形式的title,对于刚上手qt的程序员同学,可能会简单的以为修改这种title,就是使用setWindowTitle这个接口,其实只对了一半,这种形式…...
SaaS多租户系统架构设计
前言:多租户是SaaS(Software-as-a-Service)下的一个概念,意思为软件即服务,即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作的实际需求,通过互联网…...
Java自定义捕获异常
需求分析 ElectricalCustomerVO electricalCustomerVO new ElectricalCustomerVO(); electricalCustomerVO.setElcNumber(chatRecordsLog.getDeviceNumber()); List<ElectricalCustomerVO> electricalCustomerlist electricalCustomerMapper.selectElectricalCustomer…...
力扣--数组类题目27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 示例 1: 输入:nums [3,2,2,3], val 3 输出:2, nums [2,2] 解释:函数应该返回新的长度 2, 并且 n…...
实际并行workers数量不等于postgresql.conf中设置的max_parallel_workers_per_gather数量
1 前言 本文件的源码来自PostgreSQL 14.5,其它版本略有不同 PostgreSQL的并行workers是由compute_parallel_worker函数决定的,compute_parallel_worker是估算扫描所需的并行工作线程数,并不是您在postgresql.conf中设置的max_parallel_work…...
java定位问题工具
一、使用 JDK 自带工具查看 JVM 情况 在我的机器上运行 ls 命令,可以看到 JDK 8 提供了非常多的工具或程序: 接下来,我会与你介绍些常用的监控工具。你也可以先通过下面这张图了解下各种工具的基本作用: 为了测试这些工具&#x…...
【Java】基础入门 (十六)--- 异常
1.异常 1.1 异常概述 异常是指程序在运行过程中出现的非正常的情况,如用户输入错误、除数为零、文件不存在、数组下标越界等。由于异常情况再程序运行过程中是难以避免的,一个良好的应用程序除了满足基本功能要求外,还应具备预见并处理可能发…...
[javaWeb]Socket网络编程
网络编程:写一个应用程序,让这个程序可以使用网络通信。这里就需要调用传输层提供的 api。 Socket套接字 传输层提供协议,主要是两个: UDP和TCP 提供了两套不同的 api,这api也叫做socket api。 UDP和 TCP 特点对比: UDP: 无连…...
<MySon car=“宝马“ :money=“money“></MySon>有没有冒号
为什么car"宝马"没有: 但是 :money"money"就有: <script setup> import {ref} from vue import MySon from /components/MySon.vueconst money ref(100) </script><template><h3>father</h3><My…...
netty(三):NIO——多线程优化
NIO多线程优化 使用Boss线程来处理accepct事件使用Worker线程来处理读写事件,可以创建多个worker线程 package com.review;import lombok.extern.slf4j.Slf4j;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.*; impor…...
Linux操作系统--linux概述
1.Linux概述 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统(OS)。简单的说就是一种操作系统。在日常中常见的操作系统有一下三种: 2.linux起源和背景 (1).linux的诞生 linux操作系统是由李纳斯托瓦兹…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
