c++指针 初识

从JAVA转C++,开始对指针的理解,讲讲自己对指针的理解,指针也是一个变量类型而已,存的就是是某个对象或变量的地址,还是先上代码吧:代码最直接了:

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	int i = 100 ;
	//赋值方法一
	int *p =&i;//可以这样定义指针并且赋值
	//赋值方法二
	int *pt;
	 pt = &i;
// *pt = &i 这样定义不行 ,赋值方法一那样定义就行 //下面是测试结果 printf("i: %d\n",i); /* //就是指向的某个变量的内存地址 可以看出 p = &i 跟上面的赋值赋值有点不同,开始我 一直 以为赋值方法是*p=&i;那么*p=&i应该也可以的; 也可能我理解能力差的缘故, */ printf("p: %d\n",p); printf("&i: %d\n",&i); printf("*p: %d\n",*p);//就是该内存地址的内容或值 printf("pt:%d \n",pt); printf("*pt:%d \n",*pt); /* 指针的内存地址,说明指针也有自己的内存地址,指针就是一个类型 */ printf("&pt:%d \n",&pt); printf("&p:%d\n ",&p); return 0;

  上面就是我个人对指针的理解。

 使用指针:

int * myPointer = new int ;

在此情况下,指针指向一个整数值的地址。为访问这个值,需要对这个指针解除引用。如下代码

*myPointer = 8;

  


int *myPoniter = new int ;//动态分配内存 printf("&myPoniter:%d\n ",&myPoniter); printf("*myPoniter:%d\n ",*myPoniter); *myPoniter =8; printf("&myPoniter:%d\n ",&myPoniter); printf("*myPoniter 8:%d\n ",*myPoniter); delete myPoniter;//释放内存

  

这里并没有改变指针的内存地址,指改变该内存地址的内容;

 下面代码是对数组指针的理解;

	const size_t  size = 5;
	int int_arr[size] = {0,1,2,3,4};
	int *b = int_arr;
	int *e = int_arr+size;
	printf("b:%d\n",b);
	printf("b++:%d\n",++b);
	printf("int_arr0:%d\n",&int_arr[0]);//b = &&int_arr[0]
	printf("int_arr1:%d\n",&int_arr[1]);//++b=&int_arr[1]
	printf("e:%d\n",e);

	for (int *pbegin = int_arr,*end =int_arr+ size;pbegin != end;++pbegin)
	{
		std::cout<<*pbegin<<endl;
	}

  

posted @ 2013-03-24 09:40  呆呆笨笨  阅读(151)  评论(0编辑  收藏  举报