C++指针(2012.06.26&06.27)
来源:互联网 发布:access数据库编程 编辑:程序博客网 时间:2024/05/17 21:45
当你对一件事情的理解越来越深,变化就势在必行——姬十三。
1.指针
指针是用来保存内存地址的变量。指针只能用来存储与它变量类型相同的指针。
几个为什么!
为什么使用指针?(1)快速处理堆中存放的大型数据;(2)快速访问类的成员数据和函数;(3)以别名的方式向函数传递参数。(囧,目前为止一个都没用过呢。)
为什么要对指针进行初始化?因为如果不初始化,那么该指针就是一个失控指针,它可以指向任何地址。并且对该地址的值进行修改和删除。
拓展:变量提供了程序可以操作的有名字的存储区。C++中的每一个变量都有特定的类型,该类型决定了变量的内存大小和布局、能够存储于该内存中的值得取值范围以及可应用在该变量上的操作集。C++程序员常常把变量成为“变量”或“对象(object)”——摘自《C++primer中文版 第四版》
左值和右值的概念
(1)左值(lvalue):可以出现在赋值语句的左边或右边
(2)右值(rvalue):只能出现在赋值语句的右边
回到正题上来,我们先来总结一下(& 和 *)都有哪些用法(以下方程序为例):
&:(1)&s中的&符号是取地址(adress-of)操作符;(2)&引用操作符,不过只能出现等号左边。
*:(1)string *sp;*表明sp是一个指针变量;(2)cout<<*sp;此处的*表示的是解引用运算符。作用就是读取放于内存sp处的数值。
**:指向指针的指针.
(容易混淆的概念:指针地址,指针保存的地址和该地址的值)
诡异问题:
#include <stdio.h>#include <iostream>#include <string>using namespace std;int main(){string s("hello world");string *sp=&s;// sp holds the adress of sstd::cout<<*sp<<endl;return 0;}
如果写作#include<string.h>就不行。百度了一下,是这样解释的,
- C指针原理 (26)-C指针基础
- [C/C++] 指针(详解)
- C指针(转)
- C指针(1)
- C指针(2)
- C指针(转)
- 函数指针(C++)
- C++(5)指针
- C(5)指针
- C指针(笔记)
- this指针(C++)
- C指针(转)
- 指针数组和数组指针(C)
- 指针数组和数组指针(C)
- 指针数组和数组指针(C)
- C和指针(3)指针
- 指针(一)C语言指针问题
- 理解C指针:(一)指针初探
- CString,int char*之间的转换
- windows 控件编程
- jQuery 选择表格(table)里的行和列
- WINDOWS API编程乱叹
- java中文件的操作
- C++指针(2012.06.26&06.27)
- 小公司的管理之惑
- ubuntu12.04 root登录
- IIS 上传文件大小配置
- 关于TPM 的Seal 和 Unseal
- EGORefreshTableHeaderView —— UITableView下拉刷新页面的实现
- Hibernate各种主键生成策略与配置详解
- android进程和线程模型
- Android开发--获得屏幕分辨率