'&'和'*' (C++)的区别
2006-04-15 02:43
459 查看
'&'和'*' (C++)的区别
文章作者:Prelude
It depends on what is meant by &. Since C++ makes use of overloaded built in operators, & can either take the address of an object, perform a bitwise AND operation, do anything related to a user defined type if overloaded by that type, or create a reference. In the context of this question, I'll assume a reference is meant.
A reference is an alternative name for an object, a synonym that refers to the same location in memory, but has a different name. The biggest difference between a pointer and a reference is that a reference need not be dereferenced.
Example of a reference:
int i = 1;
int& r = i; // i and r refer to the same int
r = 2; // i = 2
A pointer on the other hand, is a separate variable that contains a memory address as its value, that memory address can be dereferenced, or followed, to reach the contents of that memory address. The functionality of pointers are very similar to that of references:
int i = 1;
int *p = &i; // p now points to the address of i
*p = 2 // i = 2;
The biggest difference between references and pointers is that pointers may be treated like any other variable, operations can be performed on the pointer itself:
char *p = "Test";
p++; // p = "est";
References cannot have operations performed on them since they are not variables, they are synonyms for the referred object and any operations will act on that object, not the reference.
文章作者:Prelude
It depends on what is meant by &. Since C++ makes use of overloaded built in operators, & can either take the address of an object, perform a bitwise AND operation, do anything related to a user defined type if overloaded by that type, or create a reference. In the context of this question, I'll assume a reference is meant.
A reference is an alternative name for an object, a synonym that refers to the same location in memory, but has a different name. The biggest difference between a pointer and a reference is that a reference need not be dereferenced.
Example of a reference:
int i = 1;
int& r = i; // i and r refer to the same int
r = 2; // i = 2
A pointer on the other hand, is a separate variable that contains a memory address as its value, that memory address can be dereferenced, or followed, to reach the contents of that memory address. The functionality of pointers are very similar to that of references:
int i = 1;
int *p = &i; // p now points to the address of i
*p = 2 // i = 2;
The biggest difference between references and pointers is that pointers may be treated like any other variable, operations can be performed on the pointer itself:
char *p = "Test";
p++; // p = "est";
References cannot have operations performed on them since they are not variables, they are synonyms for the referred object and any operations will act on that object, not the reference.
相关文章推荐
- 浅谈C++和C#的区别&C#与.NET的关系
- C++中include <iostream>和include <iostream.h>的区别
- C++中运算符 &和&&、|和|| 的区别
- C++的基础知识(十一)--数组做函数参数、数组名a与&a区别、数组名a的"数据类型"
- [C++杂记] #include< >和#include""的区别
- C++中 引用&与取地址&的区别
- C++中,关于#include<***.h>和#include"***.h"的区别
- c++ 指针值和指针地址的输出&指针和数组保存字符串的区别
- C/C++ .操作和->操作的区别
- C++ 箭头-> 点号. 双冒号::操作符区别
- c/c++中#include 与#include " "区别
- C++语言零基础入门教程:2.2 C/C++头文件大揭秘,""和<>有什么区别
- C++中 引用&与取地址&的区别
- C字符串和C++中string的区别 &&&&C++中int型与string型互相转换
- C++中 引用&与取地址&的区别
- C++中 引用&与取地址&的区别
- C++中 引用&与取地址&的区别
- C字符串和C++中string的区别 &&&&C++中int型与string型互相转换
- C/C++ STACK &HEAP 区别
- c/c++中#include 与#include""区别