指针的用法自解
来源:互联网 发布:虫哥耳机 知乎 编辑:程序博客网 时间:2024/06/05 07:59
指针是很复杂的一项技术,所以我写了一些指针的基本用法的理解,写的很详细可能有点罗嗦主要是为了以后的参考,如果有什么个人的看法和补充请和我联系(dskra@163.net)。
指针运算符的理解:
&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;
}
*/
- 指针的用法自解
- 指针的自增运算符用法
- 指针的指针的用法
- 指针的指针用法理解
- this指针的含义及其用法(转自飞诺网开发开发频道)
- 指针相关的自增
- 指针的用法
- 双重指针的用法
- 指针的用法
- 函数指针的用法
- this指针的用法
- 函数指针的用法
- 函数指针的用法
- 函数指针的用法
- 智能指针的用法
- 二级指针的用法
- this指针的用法
- 函数指针的用法
- C语言声明左右法则
- Shellcode的基本介绍
- Windows程序员需掌握的技术
- C语言基础知识汇编分析
- c语言元素实现汇编分析
- 指针的用法自解
- 理解java的内省与反射
- 让你不再害怕指针(1)
- 让你不再害怕指针(2)
- C/C++中的指针的应用及注意问题
- C语言指针问题快速解惑
- 深入认识 Turbo C 编译器
- 纯DOS下内存的管理—实模式下访问4GB内存
- Windows XP加快开机启动的技巧