C指针--QQ群问答

指针一般认为是一个地址常量,但是指针变量指的是变量所取的值为地址的变量

指针变量在使用中一般称作指针
但两者所指并不相同

const在星号右边,则这是个常量指针,在星号左边,则被指物是常量.

但是对于迭代器 const vetor<int>::iterator iter // 却是指针是一个常量,他有自己的常量迭代器类型

vector<int>::const_iterator

指针变量是指向指针(即指针)的变量 

指针存储地址,数组什么都可以存

数组不支持++,--,+=,-=- -
因为是常量指针
指针常量 - -
- -指针变量多了可以赋值的 

那指针变量跟指针有什么区别

整形变量,和10的区别

&出来的都是只读指针
*p 为指针变量 &i i变量的地址

XX变量- -就是放XX的变量
指针变量就是存放指针的变量
p不是i的指针

就像int a

a不是10的整形

p是指针变量

&i才是i的指针

int a = 10;
那么a的值就是10
指针是地址加上数据的类型
指针变量也是一种变量

p=&i,p指向i,&ii的指针

 

既然是变量- -就是存放这个变量类型的东西

那个变量专门存放地址


就像两种类型的指针必须要强制转换一样

I的地址指针

 

 

const int *p;
int *p=0x00000000 const;
const int *p=0x00000000 const;
搞清楚这3个指针

const int *p;

不能改变地址

int *p=0x00000000 const;

不能改变地址

const int *p=0x00000000 const;

不能改变地址里面的值

第一个是不能改变地址里的数值
第二个是不能改变指向的地址
第三个是不能改变指向的地址,也不能改变指向地址里的值

 

int a=123456789,b=987654321;

const int *p;可以修改指向地址,但是只能读地址,不能写,*p=321,错误

int *const p1=&a ;不能修改指向地址,但是可以读写地址,p1=&b,错误

const int *const p2=&a ;既不能修改指向地址,也不能写地址,只能读地址,*p2=123,错误,p2=&b,错误

const是一个C语言的关键字,它限定一个变量不允许被改变


 

 

 

posted @ 2013-05-07 22:18  javawebsoa  Views(113)  Comments(0Edit  收藏  举报