Ⅰ c语言中指针和引用的区别
指针,全称为指针变量,是用来存储内存地址的一种变量。程序中,一般通过指针来访问其指向的内存地址中的内容(数据)。
引用,是C++中提出来的一种新的使用变量的方式,即,给实际变量起个别名,通过这个别名来引用实际的变量。标准C中不支持变量的引用。
这两个概念没有任何相关性。
指针是实实在在的变量,有自己的内存存储空间,它可以指向任何有效的变量。
引用是一种形式、方法,定义的引用变量,实际上是原实际变量的另一个名称(别名),引用变量本身没有自己的实际存储空间,操作引用变量,就是在操作实际变量。
如:
Ⅱ C语言中对指针变量的直接和间接引用怎么区别
引用相比于于指针各有优点:一、引用变量它不能改变自身所引用的地址空间,而指针变量可以,那么就很可能出现一些因为不小心的修改而导致错误的结果。二、在作为函数参数方面,引用作为参数,你调用的时候不需要对变量取地址值,这样看起来比较直观,而且方便,如果是指针变量作为参数,那么你有时候会不明白这个函数到底是对指针进行运算,还是对指针指向的变量空间进行运算,而且还要取地址操作。三、不过有时候指针还是比引用好用的多,不如你需要快捷修改指向位置,那么指针是很快的,有时候你就是要对地址(就是直接对内存)操作,那么指针是首选啦。 下面是一个例子希望对你有用: //PointAndRef.cpp#include<iostream.h> //cout<< void pointFun(int *a,int *b) //指针作为参数{
int temp;
temp=*a;
*a = *b;
*b=temp;
}void refFun(int &a,int &b) //引用作为参数
{
int temp;
temp=a;
a=b;
b=temp;
}
void main()
{
int a,b;
a=1,b=2;
pointFun(&a,&b); //指针调用需要取地址值。
cout<<"a="<<a<<"b="<<b<<endl;
int c,d;
c=3,d=4;
refFun(c,d); //引用调用和正常变量调用一样。
cout<<"c="<<c<<"d="<<d<<endl;
}
Ⅲ C语言指针变量的赋值和做函数的参数
1、指针变量的赋值,分为定义时赋值(初始化)和单独赋值,如:
int x ;
int * px=&x ; //定义时赋值,也称初始化,注意这里的*是跟随int的,即变量px是int *类型变量! 实际上的赋值语句是px=&x ;
int * py ;
py=&x ; //单独赋值,将py指向x
*py=10 ; //这里的*,是引用指针中的数据操作符,*跟随的变量必须是指针类型变量,否则会出错! *py就是x,这里相当于x=10;
2、指针变量作为函数的参数时,子函数可以通过指针引用实参地址中的数据,达到修改实参地址中的数据。如:
#include <stdio.h>
void func( int a, int b, int *pmax )
{
if ( a>b ) *pmax=a;
else *pmax=b ;
}
void main()
{
int a=2,b=3,max=0;
func(a,b,&max ); //这里将变量max的地址传递到子函数,子函数中通过该地址,可以修改max的值,达到子函数结束后,max能带回运算结果的效果。
printf("max=%d\n", max );
}
Ⅳ C语言指针/引用/取值
指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。
根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,*表示这里声明了一个指针。其它情况用到*表示指针的取值。
&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。
// 声明一个int指针
int*ptr;
// 声明一个int值
int val = 1;
// 为指针分配一个int值的引用
ptr = &val;
// 对指针进行取值,打印存储在指针地址中的内容
int deref = *ptr;
printf("%d\n", deref);
第2行,我们通过*操作符声明了一个int指针。接着我们声明了一个int变量并赋值为1。然后我们用int变量的地址初始化我们的int指针。接下来对int指针取值,用变量的内存地址初始化int指针。最终,我们打印输出变量值,内容为1。
第6行的&val是一个引用。在val变量声明并初始化内存之后,通过在变量名之前使用地址操作符&我们可以直接引用变量的内存地址。
第8行,我们再一次使用*操作符来对该指针取值,可直接获得指针指向的内存地址中的数据。由于指针声明的类型是int,所以取到的值是指针指向的内存地址存储的int值。
说穿了,指针就是地址吧,这里可以把指针、引用和值的关系类比为信封、邮箱地址和房子。一个指针就好像是一个信封,我们可以在上面填写邮寄地址。一个引用(地址)就像是一个邮件地址,它是实际的地址。取值就像是地址对应的房子。我们可以把信封上的地址擦掉,写上另外一个我们想要的地址,但这个行为对房子没有任何影响。
Ⅳ C语言中“指针”和“指针变量”的区别是什么
1、概念不同
“指针”是概念,“指针变量”是具体实现,指针也是一个变量,所以需要进行定义,而对于指针的定义,与一般变量一样。
2、 存放地址不同
一个变量的(内存)地址称为该变量的“指针”,通过指针能找到以它为地址的内存单元。而指针变量是用来存放另一个变量的地址的(即指针)。
(5)c语言引用型指针变量扩展阅读:
指针和指针变量的关系
1、指针就是地址,地址就是指针。
2、地址就是内存单元的编号。
3、指针变量就是存放内存地址的变量。
4、指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针,实际他们含义并不一样。
注:
指针里存的是100. 指针:地址 - 具体。
指针里存的是地址,指针:指针变量 -可变。
指针的好处:
1、直接访问硬件
2、快速传递数据(指针表示地址)
3、返回一个以上的值返回一个(数组或者结构体的指针)
4、表示复杂的数据结构(结构体)
5、方便处理字符串
6、指针有助于理解面向对象