C++ Pointers
C ++指针很容易学习。 使用指针可以更轻松地执行某些C ++任务,而没有它们就无法执行其他C ++任务,例如动态内存分配。
如您所知,每个变量都是一个内存位置,并且每个内存位置都定义了其地址,可以使用&符号(&)运算符来访问它,该运算符表示内存中的地址。 考虑以下将打印定义的变量的地址 -
#include <iostream>
using namespace std;
int main () {
int var1;
char var2[10];
cout << "Address of var1 variable: ";
cout << &var1 << endl;
cout << "Address of var2 variable: ";
cout << &var2 << endl;
return 0;
}
编译并执行上述代码时,会产生以下结果 -
Address of var1 variable: 0xbfebd5c0
Address of var2 variable: 0xbfebd5b6
什么是指针 (What are Pointers?)
pointer是一个变量,其值是另一个变量的地址。 与任何变量或常量一样,您必须先声明指针才能使用它。 指针变量声明的一般形式是 -
type *var-name;
这里, type是指针的基类型; 它必须是有效的C ++类型, var-name是指针变量的名称。 用于声明指针的星号与用于乘法的星号相同。 但是,在此语句中,星号用于将变量指定为指针。 以下是有效的指针声明 -
int *ip; // pointer to an integer
double *dp; // pointer to a double
float *fp; // pointer to a float
char *ch // pointer to character
所有指针的值的实际数据类型,无论是整数,浮点数,字符还是其他,都是相同的,是表示内存地址的长十六进制数。 不同数据类型的指针之间的唯一区别是指针指向的变量或常量的数据类型。
在C ++中使用指针
很少有重要的操作,我们将非常频繁地使用指针。 (a)我们定义一个指针变量。 (b)将变量的地址分配给指针。 (c)最后访问指针变量中可用地址的值。 这是通过使用一元运算符*来完成的,该运算符*返回位于其操作数指定的地址处的变量的值。 以下示例使用这些操作 -
#include <iostream>
using namespace std;
int main () {
int var = 20; // actual variable declaration.
int *ip; // pointer variable
ip = &var; // store address of var in pointer variable
cout << "Value of var variable: ";
cout << var << endl;
// print the address stored in ip pointer variable
cout << "Address stored in ip variable: ";
cout << ip << endl;
// access the value at the address available in pointer
cout << "Value of *ip variable: ";
cout << *ip << endl;
return 0;
}
编译和执行上面的代码时,它产生的结果如下 -
Value of var variable: 20
Address stored in ip variable: 0xbfc601ac
Value of *ip variable: 20
C ++中的指针
指针有很多但很简单的概念,它们对C ++编程非常重要。 C ++程序员应该清楚以下几个重要的指针概念 -
Sr.No | 概念与描述 |
---|---|
1 | 空指针 C ++支持空指针,这是一个在几个标准库中定义的值为零的常量。 |
2 | 指针算术 可以在指针上使用四个算术运算符:++, - ,+, - |
3 | 指针与数组 指针和数组之间存在密切关系。 |
4 | 指针数组 您可以定义数组以包含许多指针。 |
5 | 指针指针 C ++允许您在指针上指针等等。 |
6 | 将指针传递给函数 通过引用或地址传递参数都可以通过被调用函数在调用函数中更改传递的参数。 |
7 | 从函数返回指针 C ++允许函数返回指向局部变量,静态变量和动态分配内存的指针。 |