Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >c语言中(int)什么意思_c语言中怎么用int转化char

c语言中(int)什么意思_c语言中怎么用int转化char

作者头像
全栈程序员站长
发布于 2022-09-23 13:11:02
发布于 2022-09-23 13:11:02
5K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

文章目录

1、int;

int是C++关键字,表示整型,其大小是32位有符号整型,表示的范围是-2,147,483,648 到2,147,483,647;

在声明和定义变量时使用,它表示的意思是所声明或所定义的变量为整型变量。

如果其用于函数参数时,其传递方向为值传递,即只能将实参的值传递给形参,而不能将形参的值传递给实参。

例如:通过这种方式去进行交换两个数是无法达到目的的。

例子1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
using namespace std;
void swap1(int a, int b)
{ 
   
	int tmp;
	tmp = a;
	a = b;
	b = tmp;
}

int main() { 
   
	int a = 1;
	int b = 2;
	swap1(a, b);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	system("pause");
	return 0;
}

结果为:a=1

b=2

因为传递的方式为值传递(单向传递);

2、int&;

这里的&不是取地址符号,而是引用符号,引用是C++对C的一个重要补充。变量的引用就是变量的别名,讲的通俗一点就是另外一个名字,比如:“张三这个人在家里,老爸老妈叫他三娃子,那么这个三娃子就是指张三这个人,如果叫张三去做某事,就是叫三娃子去做某事,这两个名字指的是同一个人。”同样可以理解如果变量b是变量a的引用 那么无论a,b中任何一个值改变,另外一个也相应的改变,在声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量。请注意:由于引用不是独立的变量,编译系统不给它单独分配存储单元,因此在建立引用时只有声明没有定义,只是声明它与原有的某一变量的关系。

在声明一个变量的引用后,在本函数执行期间,该引用一直与其代表的变量相联系,不能再作为其他变量的别名。说得简单点:张三和三娃子是指同一个人,不能李四也叫三娃子,如果可以这样,叫三娃子去做什么,是叫李四呢还是张三呢,这就会乱套了。所以在C++中一个引用变量只能对应一个原始的变量,不能对应两个或多个原始的变量;

下面简单说明引用:

a) 声明引用时必须指定它代表的是哪一个变量,即对它初始化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int &a=b;

这样是声明a是变量b的引用 如果是int &a;这样就是错的,没有指定a代表哪一个变量。

b) 引用与其所代表的变量共享同一内存单元,系统并不为引用另外分配存储单元;这个应该好理解;就像前面所说的,张三和三娃子都是同一个人,三娃子只是张三的别名。因此,对于 int &a=b;这个例子来说,要输出a和b 的地址,肯定是相同的。

c) 怎样区分&是引用还是取地址符呢?方法是:判断&a这样的形式前是否有类型符即int &a=b;如果有类型符(int)则是引用,否则是取地址运算符。

d) 对引用的初始化,可以是一个变量名,也可以是另一个引用。 换句话说:张三的别名可以是三娃子,三小子……及其他多个别名 而三娃子也可以有其他的别名,比如说:老三,小三等

用程序可以这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int a=1; //这里是定义一个整形变量
int &b=a;//声明b是整型变量a的别名
int &c=b;//声明c是整型引用变量b的别名
int &d=a;//声明d是整型变量a的别名

e) 引用初始化后不能再被重新声明为另一变量的别名 即三娃子既然是指张三这个人,就不能让其他人也叫三娃子 即一个别名只能对应一个原始变量,但是一个原始变量可以有多个别名,而且别名也可以由自己的别名。


引用几点说明

C++中增加引用主要是作为函数参数,进行数据传递的功能;

我们知道如果用变量名作为实参,其传递方向是单向的,而用引用作为实参其传递方向是双向的;

也许你会问,在c语言中不是有指针吗,用指针进行参数传递不也是双向的吗?其实其本质上也是值传递,只不过是将变量的地址传给指针,通过指针获取变量的值,这样做虽能得到结果,但通过指针运算符去访问有关变量,比较麻烦。

下面分析一下使用引用和使用指针变量作为函数形参的不同(以例子1中的swap函数为例):

1、如果使用引用,则不必在swap函数设立指针变量,指针变量要另外开辟内存单元,其内容是地址。而引用不是一个独立的变量,并不占用内存单元 2、在main函数中调用swap函数时实参不必再变量名前加&以表示地址,系统传递的是实参的地址不是实参的值。 3、使用指针变量时,为了表示指针变量所指向的变量,必须使用指针运算符,而使用引用时,引用就代表该变量,不必使用指针运算符; 4、用引用完成的工作,用指针也能完成。但引用比指针的使用直观、方便,直截了当,

不必“兜圈子”,容易理解。有些过去只能用指针来处理的问题,现在可以用引用来代替,

从而降低了程序设计的难度。

对引用进一步说明:

  • 1、不能建立void类型的引用。 因为任何实际存在的变量都是属于非void类型的,void的含义是无类型或空类型, void只是在语法上相当于一个类型而已。
  • 2、不能建立引用的数组。 如:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char c[6]="hello";
char &rc=c;//错误

因为数组名是数组首元素的地址,本身不是一个占有存储空间的变量。

  • 3、可以将变量的引用的地址赋给一个指针,此时指针指向的是原来的变量。 这句话可以这样说:将引用变量的地址赋给一个指针,此时指针指向的是引用变量,相当于指向原来的变量
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int a=2;
int &b=a;//这个声明语句中的&是一个引用
int *p=&b;//这个指针初始化语句中的&是取地址运算符

上面一行等价于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 int *p=&a;

但是不能定义指向引用类型的指针变量,不能写成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int & *p=&a;//企图定义指向引用类型的指针变量p,错误

因为引用不是一种独立的数据类型,因此不能建立指向引用类型的指针变量。

  • 4、可以建立指针变量的引用如
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int i=5;
int *p=&i;
int * &pt=p;//建立指针变量p的引用pt

引用变量pt代表一个int *类型的数据对象(即指针变量)

  • 5、可以用const对引用加以限定,不允许直接改变该引用的值,但是可以改变原变量的值去改变引用的值;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int i=5;
const int &a=i;
a=3;//错误,因为引用a是const int 类型不能直接改变引用的值

但是可以这样修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
i=3;

此时输出i和a都是3

  • 6、可以用常量或表达式对引用进行初始化,但此时必须用const作声明。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int i=5;
const int &a=i+1;

此时编译系统是这样处理的:生成一个临时变量,用来存放该表达式的值,引用是

该临时变量的别名、系统将“const int &a=i+1;”转换为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int temp=i+1;
const int &a=temp;

临时变量是在内部实现的,用户不能访问临时变量;

用这种办法不仅可以用表达式对引用进行初始化,还可以用不同类型的变量对之

初始化;如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
double d=3.1415926;
const int &a=d;

以上等价为:

double d=3.1415926;
int temp=d;
const int &a=temp;

如果在上面不用const则会发生错误

double d=3.1415926;
int &a=d;//未加const,错误

为什么?因为如果可以这样做,那么修改引用a的值(如a=3.56),则临时变量temp的值也变为3.56,即修改了临时变量temp的值,但不能修改变量d的值,这往往不是用户所希望的,即存在二义性。与其允许修改引用的值而不能实现用户的目的,还不如不允许修改引用的值。这就是C++规定对这类引用必须加const的原因。

区别实例

结果

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170882.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c语言指针的基本使用
指针(pointer)是C语言中一个重点和难点,以下是对其基本使用的一些总结,适合入门的同学。除了是对自己的学习的总结之外,也希望能对大家有所帮助。
梦飞
2022/06/23
9300
【C语言】指针
本文目录 直接引用 一、什么是指针? 二、指针的定义 三、指针的初始化 四、指针运算符 五、指针的用途举例 六、关于指针的疑问 指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。究竟什么是指针呢?我们先来看一个概念。 回到顶部 直接引用 1. 回想一下,之前我们是如何更改某个变量的值? 我们之前是通过变量名来直接引用变量,然后进行赋值: char a; a = 10; 2. 看上去是很简单,其实程序内部是怎么操作的呢? 其实,程序对变量的读写操作,实际上是
用户1941540
2018/05/11
3.4K0
【超详细】*和&在C/C++中的常见用法(附示例讲解)
可用作代码块的注释说明。与//不同的,//用于一行代码的注释说明,类似于python中的#,而/* code block */用于一个代码块的注释说明,类似于python中的``` code block ```。
自学气象人
2023/01/13
4.7K0
C语言中的指针详解
计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节,为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址”,每个存储单元拥有一个唯一的地址。
越陌度阡
2021/11/09
3.2K0
C++基础入门_C语言入门基础
​ Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开
全栈程序员站长
2022/09/30
5.7K0
C++基础入门_C语言入门基础
C语言中函数参数传递的三种方式
(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。 (2)传址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。 (3)传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。 说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。 因而如果int,char等固有类型,而是你自己定义的类或结构等,都建议传指针或引用,因为他们不会创建新的对象。
全栈程序员站长
2022/07/02
4.6K0
C语言中函数参数传递的三种方式
C++ 引用与引用作为函数的参数
对一个数据建立一个“引用”,他的作用是为一个变量起一个别名。这是C++对C语言的一个重要补充。
chaibubble
2022/05/07
2.3K0
C++ 引用与引用作为函数的参数
C++随记(七)--引用变量
TeeyoHuang
2017/12/28
1.1K0
C++基础语法
包含了一个iostream的文件头。头文件作为一种包含功能函数、数据接口声明的载体文件,通常编译器通过头文件找到对应的函数库,把引用的函数实际内容导出来。
全栈程序员站长
2022/07/13
9580
还记得指针与引用吗?说下呗!
在C++中,我们常常使用到指针和引用,但对于它们的区别,很多C++的老手也容易混淆。
灿视学长
2021/05/28
5390
C和指针小结(C/C++程序设计)
C和指针 相关基础知识:内存的分配(谭浩强版) 1、整型变量的地址与浮点型/字符型变量的地址区别?(整型变量/浮点型变量的区别是什么) 2、int *p,指向整型数据的指针变量。 3、通过指针变量访问整型变量。 4、*p :指针变量p指向的存储单元(变量) 5、p = &a——>> *p = *&a 6、用指针作函数参数 7、调用函数中,由于虚实结合是采用单向的“值传递”方式,只能从实参向形参传数据,形参值的改变无法回传给实参。 8、引用一个数组元素可以用(1)下标法(2)指针法(占内存小,运行速度快) 9
互联网金融打杂
2018/04/03
6290
C和指针小结(C/C++程序设计)
C语言——指针(2)
前面我们已经了解了指针的基本概念以及简单的使用,那么什么问题一定要使用指针解决呢?
用户11352420
2024/11/07
1210
C语言——指针(2)
C++引用高级使用!
(4)引用声明完毕后,相当于目标变量有两个名称即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
用户6280468
2022/03/21
5600
C++中指针与引用详解
在计算机存储数据时必须要知道三个基本要素:信息存储在何处?存储的值为多少?存储的值是什么类型?因此指针是表示信息在内存中存储地址的一类特殊变量,指针和其所指向的变量就像是一个硬币的两面。指针一直都是学习C语言的难点,在C++中又多了一个引用的概念。初学时很容易把这两个概念弄混,下面就来通过一些例子来说明二者之间的差别。
呆呆
2021/07/05
7470
【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )
C++ 对 C 扩充 : 引用 ( Reference ) 概念 , 是 C++ 在 C 的基础上进行的扩充 , 在 C 语言中是没有引用的 ;
韩曙亮
2023/03/27
1.3K0
C++中引用详解
引用简介   引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。   引用的声明方法:类型标识符 &引用名=目标变量名;   【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名   说明:   (1)&在此不是求地址运算,而是起标识作用。   (2)类型标识符是指目标变量的类型。 (3)声明引用时,必须同时对其进行初始化。   (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其
Linux云计算网络
2018/01/10
1.3K0
介绍C语言指针
引用传递是C++才有的特性,C语言只支持值传递。所以C语言只能通过传指针来达到在函数内修改函数外变量的功能。也就是swap(int &a,int &b)在C语言中是错的,swap(int *a,int *b)是对的。
_春华秋实
2018/08/17
2.3K0
介绍C语言指针
【C语言】深入解开指针(二)
变量是可以修改的,如果把变量的地址交给⼀个指针变量,通过指针变量的也可以修改这个变量。但是如果我们希望⼀个变量加上⼀些限制,不能被修改,怎么做呢?
学习起来吧
2024/02/29
1430
【C语言】深入解开指针(二)
我的C++奇迹之旅:值和引用的本质效率与性能比较
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。
学习起来吧
2024/04/09
2390
我的C++奇迹之旅:值和引用的本质效率与性能比较
C++引用分析实例与案例刨析及使用场景分析详解
可以修饰实参。本质:接收(int *const a ,int * const b) 传入(&a,&b),编译器自动把识别引用所以使用引用时只传入(a,b)即可。
CtrlX
2022/08/10
2940
C++引用分析实例与案例刨析及使用场景分析详解
相关推荐
c语言指针的基本使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验