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; }
相关文章推荐
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用智能指针 用StrBlob代替vector<string> C++Primer 练习12.32
- C/C++学习之C提高-----非空格的字符串长度、去掉字符串前后空格、字符串反转、键值对字符串、const练习、二级指针做输入/输出的特性、将字符串按逗号分开,并放入二维数组打印出来
- GetMemory错误讲解(指针练习)----C++面试之GetMemory问题
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用智能指针 用StrBlob代替vector<string> C++Primer 练习12.32
- C++程序设计语言练习5.8 编译器对指针的优化
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用智能指针 用StrBlob代替vector<string> C++Primer 练习12.32
- C++文本查询程序 定义类管理数据 用智能指针 C++Primer练习12.30
- C++文本查询程序 定义类管理数据 用引用共享数据 不用智能指针 C++Primer练习12.27