C++指针练习

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值