C语言学习(五)指针

 

int main(){
    int a=99;
    int *p=&a;
    int **pp=&p;
    printf("%08x\n",a);      //00000063
    printf("%08x\n",&a);     //bfbf5824
    printf("%08x\n",p);      //bfbf5824
    printf("%08x\n",&p);   //bfbf5828
    printf("%08x\n",*p);    //00000063
    printf("%08x\n",pp);    //bfbf5828
    printf("%08x\n",&pp);   //bfbf582c
    printf("%08x\n",*pp);   //bfbf5824
    printf("%08x\n",**pp);  //00000063
    return 0;
}

分析:每个变量都是由:存储位置、变量值,而指针不同的是变量值存放的是指向变量的地址,所以使用*可以根据变量值里的地址获取变量值

声明指针:int *p;赋值:p=&a;即:p是存放a变量的地址,*p代表从p中的地址获取对应指向的值a;

而指针的指针声明:int **pp;赋值:pp=&p;即:pp是存放p指针的地址,*pp代表从pp中的地址获取对应指向即p,**pp取a值;

int i;          定义整型变量i
int *p;        p为指向整型数据的指针变量
int a[n];      定义整型数组a,它有n个元素
int *p[n];     定义指针数组p,它由n个指向整型数据的指针元素组成
int (*p)[n];   p为指向含n个元素的一维数组的指针变量
int f();        f为带回整型函数值的函数
int *p();      p为带回一个指针的函数,该指针指向整型数据
int (*p)();    p为指向函数的指针,该函数返回一个整型值
int **p;       p是一个指针变量,它指向一个指向整型数据的指针变量

字符数组赋值

  char  str[14];
  str=″I love China!″;
或
  char *a;  
  a=″I love China!″;
或   
char *a=″I love China!″;
  char *a; a=″I love China!″;

注意赋给a的不是字符,而是字符串第一个元素的地址。
而对数组的初始化: char str[14]={″I love China!″}; 
不能等价于
char str[14]; str[ ]=″I love China!″;

 

posted @ 2014-12-02 15:14  W&L  阅读(267)  评论(0)    收藏  举报