• 一颗星星--------一把钥匙

int x=100;
int *ptr = &x;

 语义:

  1. ptr是一个指针变量
  2. ptr存储是某一变量的地址
  3. 利用*ptr可以得到某变量的值

指针对const的作用:

const int *p = &a;

 

  1. p指针指向变量a的地址
  2. 因为const修饰int*,标识p不能修改a变量的值;但可以修改p指针指向别的变量的地址

int* const p=&a;

 

  1. 可以将*p的值修改
  2. 但是不能将别的变量地址赋值给p,因为const修改是的p变量本身。

const int* const p=&a;
  1.  不可以给p赋值别的变量地址
  2. 不可以修改*p(a)的值
  • 两颗星星----------标识两把钥匙

int x=100;
int *p1=&a;
int **p2=&p1;

printf("*p1=%d,**p2=%d\n",*p1,**p2);

 

  1. 指针变量p1存储x的地址;
  2. 指针变量p2存储变量p1的地址;
  3. 需要访问x的值使用**p2:通过两次间接访问
  • 三颗星星-------------------------标识三把钥匙

int x=100;
int *p1=&a;
int **p2=&p1;
int ***p3=&p2;

printf("*p1=%d,**p2=%d,***p3=%d\n",*p1,**p2,***p3);

 

  1. 指针需要经过3次的间接访问才能得到变量的值
char *diamond ="";
相当于 char diamond []= {""}
char *p = diamond;

 

  • 指针就是一个地址。

 

posted on 2014-03-19 13:56  leeying  阅读(235)  评论(0编辑  收藏  举报