您的位置:首页 > 编程语言 > C语言/C++

指针与引用的区别

2017-03-24 23:30 176 查看
指针:指针指向一块内存,它的内容是所指内存的地址。

引用:引用是某块内存的别名。

指针与引用的区别如下:

1、引用必须初始化,指针可以不用初始化。

编译报错如图:



2、在sizeof中含义不同,引用表示引用类型的大小,指针始终是地址所占的字节数。

int main()
{
int c1 = 10;
int &c2 = c1;
int *p = &c1;

/*char c1 = 'a';
char &c2=c1;
char *p=&c1;*/
cout << "c2:" << c2 << " ";
cout << "\n" << " ";
cout <<"sizeof(c2):"<< sizeof(c2) << " ";
cout << "\n" << " ";
cout <<"sizeof(p):"<< sizeof(p) << endl;
cout << "\n" << " ";
cout << "c2++:" <<++c2<<" ";
cout << "\n" << " ";
cout << "p++:" << ++p << " ";

system("pause");
return 0;
}


int型运行结果:



char型运行结果:



3、指针可以指向不同的变量,但引用只能指向所引用的变量。

char c1 = 'a';
char c3 = 'd';
char &c2=c1;//c2引用c1
char *p=&c1;//p指向c1
c2 = c3;//c2仍引用c1,但此时c1的值为d
p = &c3;//此时p指向c3


改变引用指针指向之前打印的结果:



改变引用指针指向之后打印的结果:



4、没有NULL引用,但有NULL指针。

int c1 = 10;
int &c2 = NULL;
int *p = NULL;


编译报错如图:



5、int **p,二级指针,int &&p,为幼稚引用;有多级指针,无多级引用。

6、引用比指针安全。

7、指针自增和引用自增意义不同。指针自增,指向另一块内存空间,引用自增,引用的变量加1。

int main()
{
int c1 = 10;
int &c2 = c1;
int *p = &c1;
cout << "c2:" << c2 << " ";
cout << "\n" << " ";
cout << "c1:" << c1<< " ";
cout << "\n" << " ";
cout <<"p:"<< (int)p << " ";
cout << "\n" << " ";
cout << "c2++:" <<++c2<<" ";
cout << "\n" << " ";
cout << "p++:" << (int)++p << " ";
system("pause");
return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息