#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;
}
C++指针练习
最新推荐文章于 2024-02-02 09:25:31 发布