关于C++指针
2005-12-09 20:46
316 查看
两个运算符啊.
* 运算地址,也就是取这个指针指向的变量的值.
& 取地址.
int i, *p;
p = &i; &i 就是取i的地址.p是指针,也就是存放地址的变量.
i = *p; *p这个恰恰相反,取该指针指向的数值.
一定要区别于声明时候的语法.
int *p; 这里的*不是运算符,而是类型符,表示指针类型.
int *p = &i; 这个不是 *p = &i;而是 int *p; p=&i;
这两个运算符是从右到左的.
*&p = *(&p),先取p的地址,然后取这个地址指向的数值.所以*&p = p.
但是 &*P 就要注意了,因为*运算符一定要是合法的地址,否则程序出错.也就一定要保证p的值是合法的.
没有初始化的指针的值是非法的.
int *p;
*p = 11; //非法,p还没初始化;
p = (int*)12312;
*p = 22; //非法,可能指向非程序管理的地址空间.除非你知道该地址是合法的.
int i, pi;
pi = (int)&i;
p = (int*)pi.
*p = 33; ;//因为i是程序的一个变量,所以知道他的地址是合法的
* 运算地址,也就是取这个指针指向的变量的值.
& 取地址.
int i, *p;
p = &i; &i 就是取i的地址.p是指针,也就是存放地址的变量.
i = *p; *p这个恰恰相反,取该指针指向的数值.
一定要区别于声明时候的语法.
int *p; 这里的*不是运算符,而是类型符,表示指针类型.
int *p = &i; 这个不是 *p = &i;而是 int *p; p=&i;
这两个运算符是从右到左的.
*&p = *(&p),先取p的地址,然后取这个地址指向的数值.所以*&p = p.
但是 &*P 就要注意了,因为*运算符一定要是合法的地址,否则程序出错.也就一定要保证p的值是合法的.
没有初始化的指针的值是非法的.
int *p;
*p = 11; //非法,p还没初始化;
p = (int*)12312;
*p = 22; //非法,可能指向非程序管理的地址空间.除非你知道该地址是合法的.
int i, pi;
pi = (int)&i;
p = (int*)pi.
*p = 33; ;//因为i是程序的一个变量,所以知道他的地址是合法的
相关文章推荐
- 转载:关于C++指针
- 关于C++中函数指针的使用
- 关于c++中const和指针结合的使用
- C++学习笔记---关于指针
- 关于C/C++的指针
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- C++ 中关于指针入门的最好的文章
- 关于C++中的指针、数组
- 关于LinuxC/C++中字符指针char * str 与字符数组 char str []的一点小区别
- C++关于父类指针指向子类对象的问题
- 关于C++指针的研究
- 关于对使用类实现C++指针功能性能打折扣的反驳
- 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- 关于C以及C++中指针的深入理解
- C/C++中关于地址、指针和引用变量的学习笔记(一)
- C/C++中关于地址、指针和引用变量的学习笔记(四) : 函数
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++基类、派生类的引用和指针(动态绑定和静态绑定)
- C++ 关于在一个类中定义另一个类的指针与对象
- 一图总结C++中关于指针的那些事