• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

指针的用法自解

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 12次 | 进入软件测试论坛讨论

领测软件测试网

/*
指针是很复杂的一项技术,所以我写了一些指针的基本用法的理解,写的很详细可能有点罗嗦主要是为了以后的参考,如果有什么个人的看法和补充请和我联系()。
 指针运算符的理解:
  &p---是指针的物理地址;
   p---是指针物理地址里的内容(要指向存储单元的地址)
  *p---是指针物理地址里的内容(就是付给它的存储单元的地址)
    指向的内容(就是存储单元的内容)
*/
void main()
{
 int *p=0; //char最好用NULL,int用0 初始化

 int *a=0; //付的是要指向存储单元的地址

 int b=38; //指针是一个指向存储单元的地址,它只能存地址
 a=&b;  //所以要付给它指向的内容,可付任何存储单元
  
 p=a;   //把指针a物理地址里的内容付给指针p物理地址里
     //的内容,指针p的值就和指针a的值一样,但它们
     //的物理地址不同。

     //它没有把指针a付给指针p,只是间接的把指针a指向
     //的内容b付给指针p了。下面的用法是完全把
     //指针a付给了指针m

 int **m=0; //付的是要指向的指针的地址,它就是指针的指针
    

 m=&a;   //把指针a的物理地址付给指针m物理地址里的内容
     //这样指针m物理地址里的内容就是指针a的物理地址
     //它可以操作指针a了,m就是指针a(a的物理地址--&a)
     //*m就是指针a物理地址里的内容(b的物理地址--&b)
     //**m就是指针a物理地址里的内容指向的内容(b的值--38)

 int *&n=a;  //引用必须付初值,它不能为空
     //int *&n=a;就相当与int *a;n等于a
     //int **m=&a;就相当与int *a;
     //m等于&a,*m等于a,**m等于*a


}

/*
//例子:  最好不要在堆栈里分配堆,不好控制容易出错。

void GetMemory2(char **p, int num)
{

 *p =new char[num];
}

void main()
{
 char *str = NULL;
 GetMemory2(&str, 10);
 strcpy(str, "hello");
 printf(str);
 delete []str;
 cout<<endl;
}
*/
/*
void GetMemory2(char *&p, int num)
{

 p = new char[num];
}

void main()
{
 char *str = NULL;
 GetMemory2(str, 10);
 strcpy(str, "hello");
 printf(str);
 delete []str;
 cout<<endl;

}
*/


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网