您的位置:首页 > 编程语言 > C语言/C++

C++指针练习

2012-10-27 19:43 155 查看
#include "stdafx.h"
#include "Handler.h"
//#include <iostream>

//#define DEBUG(format,arg...) printf("debug:"format,##arg)

//模板函数
/*templete <typename T>
T abs(T x){
return x<0?-x:x;
}*/

//}
int _tmain(int argc, _TCHAR* argv[])
{

//1.指针测试========================================================
int a=5;
int *p=&a;   //定义一个整型的指针,指向了a的地址 &a 表示取a的地址。
printf("a=%d\n",a);
*p=6;
printf("a=%d  p=%d\n",a,p);

(*p)++; //表示对指针指向的值++
printf("打印a=%d  指针:%d\n",a,p);
p++; //指针本身+1
printf("打印a=%d   指针:%d\n",a,p);
p=NULL; //表空指针
void* p2=NULL; //表示通配指针

printf("指针:%d",p);

//2.函数传递
printf("计算前的a=%d\n",a);
Handler::inc1(a);
printf("计算后的a=%d\n",a);

printf("计算前的a=%d\n",a);
Handler::inc2(&a);
printf("计算后的a=%d\n",a);

//3.函数不能返回函数内部变量的指针,因为函数调用完成就这个指针就不能访问
//int *b=Handler::findMax();
//printf("b=%d  指针:%d",*b,b);

//4.指针常量定义
int* const c1=&a; //表示c1值可变,指针本身不能变 ;
//c1=p;  指针不可修改
(*c1)++; //指针对应内容可以修改

int const *c2=&a; //指针可变,内容不可修改 等同const int *c2;
//(*c2)++; //内容不可修改
c2=p;

const int * const c3=&a; //都不能修改
//(*c3)++; //内容不可修改
//c3=p;   //指针不可修改
p=NULL;

//5.数组与指针=================================================

//5.1一维数组
char ch[3]; //ch表示第一个元素的地址常量
char *ch_p;
ch_p=ch; //ch表示
(*ch)=5;
*(++ch_p)=6; //指针加完跳到ch[1]
*(++ch_p)=7; //指针加完跳到ch[2]
//等价 ch[1] == *(ch+1) == *(ch_p+1) ==ch_p[1]
//区别 ch++ 错误  ch_p++可以
printf("数据:ch[0]=%d   ch[1]=%d  ch[2]=%d\n",*ch,*(ch+1),ch[2]);

ch_p=ch+1;
printf("数据:%d %d\n",ch_p[1],ch[2]);//等价与 ch[2]

//5.2二维数组
char cc[2][3];
printf("首地址%p  0x%x",cc,*cc); //cc == *cc ==() 因为编译器识别出首地址对应的是cc[2] 的地址

//printf("%s",__func__);

//动态分配内存 一定要配合free();
int *k=(int*)malloc(4*sizeof(int));

for(int i=0;i<4;i++){
k[i]=i+10;
}

for(int i=0;i<4;i++){
printf("Value k[%d]=%d\n",i,k[i]);
}

if(k){
free(k);
printf("Free memory\n");
}

getchar();

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐