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;
}

浙公网安备 33010602011771号