首页 > 编程 > C++ > 正文

c++指针实例说明

2019-11-06 06:17:29
字体:
来源:转载
供稿:网友

指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。在使用指针存储其他变量地址之前,必须对其进行声明。通过指针,可以简化一些 C++ 编程任务,另外还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C++ 程序员,学习指针是很有必要的。每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。

实例1感受一下:

#include <iostream>using namespace std;const int max = 3;int main(){	int var1=20;	int var2[max] = {1,10,100};	int *p_var1 = &var1;	int *p_var2;	p_var2 = var2;	cout << "var1的地址:" << &var1 << endl;	cout << "var2_string的地址:" << &var2 << endl;	cout << "the value of var1 is:" << *p_var1 << endl;	for (int i = 0; i < max; i++)	{		cout << "the address of var2[" << i << "]=" << p_var2<<endl;		cout << "the value of var2[" << i << "]="<<*p_var2<<"/n"<<endl;		p_var2++;	}	return 0;}

运行结果:

实例1中,p_var2++实现了指针的递增运算。

实例2:

#include <iostream>using namespace std;const int max = 3;int main(){	char *PRoverb[] = 	{  "pxx",		"sr",		"my",		"lx" 	};	char *gr = "ur lv is:";	int choice = 0;	cout << "pls chose a num from 1 to 4" << endl;	cin >> choice;	if (choice >= 1 && choice <= 4)		cout << gr << proverb[choice - 1];	else		cout << "sorry,the choice is not in the range" << endl;	return 0;}

运行结果:

实例2中,*proverb是一个指针数组。指针和数组是密切相关的。事实上,指针和数组在很多情况下是可以互换的。例如,一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。

实例3:

#include <iostream>using namespace std;int main(){	int  var;	int  *ptr;	int  **PPTr;	var = 3000;	// 获取 var 的地址	ptr = &var;	// 使用运算符 & 获取 ptr 的地址	pptr = &ptr;	//获取地址	cout << "address of var:" << &var << endl;	cout << "address of ptr:" << &ptr << endl;	cout << "address of pptr:" << &pptr << endl;	// 使用 pptr 获取值	cout << "Value of var :" << var << endl;	cout << "Value available at *ptr :" << *ptr << endl;	cout << "Value available at **pptr :" << **pptr << endl;	return 0;}运行结果:

实例3中定义了一个指向指针的指针。

实例4:

#include <iostream>using namespace std;double getAverage(int *arr, int size);int main(){	int balance[5] = { 1000, 2, 3, 17, 50 };	int *ptr = balance;	double avg;	// 传递一个指向数组的指针作为参数	avg = getAverage(ptr, 5);	cout << "Average value is: " << avg << endl;	return 0;}double getAverage(int *arr, int size){	int    i, sum = 0;	double avg;	for (i = 0; i < size; ++i)	{		sum += arr[i];	}	avg = double(sum) / size;	return avg;}实例4传递指针给函数,同样此时也可以使用数组给函数。参考:

http://www.runoob.com/cplusplus/cpp-pointers.html

http://wenku.baidu.com/link?url=HRLn_BwrA6ctsrmNRXMYN_JakFgtWn8L5jwarlNnagViX_qfm4po8Maw1FhU1iBKXWe1x-qGD5lUw21OQD6W1qlWLoAp7gGG0eq6d4OL92G


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选