指针详注释二 (指向指针的指针)

#include <stdio.h>

int main()

{

    int a = 10;

    

    int *p = &a;

    

    int **pp = &p;

    

    // a = 20;

    

    // *p = 20;

    

    /*

    (*pp) == p

    

    *(*pp) == *p = a

    

    **pp == *p = a

    */

    **pp = 20;

    

    printf("%d\n", a);

    

    //int ***ppp = &pp;

    

    /*

    char a2 = 'A';

    char *p2 = &a2;

    */

    

    return 0;

}

 

指针例1

 

 

#include <stdio.h>

 

int main()

 

{

 

  double d = 10.5;

double d2 = 10.5;

 double *p;

 p = &d;

 *p = 10.9;

 

   p = &d

*p = 10.9;

 printf("d=%f, d2=%f\n", d, d2);

// 清空指针

 

    p = 0;

// p = NULL;

// 清空指针后,不能再间接访问其他存储空间

 

    // *p = 100.7;

   return 0;

 

}

指针例2 

#include <stdio.h>

void swap(int *v1, int *v2);

 

int main()

{

    /*

    int a = 10;

    int b = 11;

    

    swap(&a, &b);

    */

    int a2 = 90;

    int b2 = 89;

    swap(&a2, &b2);

     printf("a2=%d, b2=%d\n", a2, b2);

    return 0;

}

 

/* 不能交换外面实参的值,仅仅是交换了内部指针的指向

void swap(int *v1, int *v2)

{

    int *temp;

    temp = v1;

    v1 = v2;

    v2 = temp;

}*/

 

// 完成两个整型变量值的互换

void swap(int *v1, int *v2)

{

    int temp = *v1;

    *v1 = *v2;

    *v2 = temp;

}

 

/* 交换的只是内部v1、v2的值

void swap(int v1, int v2)

{

    int temp = v1;

    v1 = v2;

    v2 = temp;

}*/

指针例3

#include <stdio.h>

int sumAndMinus(int n1, int n2, int *n3);

 

int main()

{

    int a = 10;

    int b = 7;

    

    // 存储和

    int he;

    // 存储差

    int cha;

    he = sumAndMinus(a, b, &cha);

    printf("和是%d, 差是%d\n", he, cha);

    return 0;

}

 

// 返回值是

int sumAndMinus(int n1, int n2, int *n3)

{

    *n3 = n1 - n2;

     return n1 + n2;

}

 

 指针例4

/*

 %d int

 %f float\double

 %ld long

 %lld long long

 %c char

 %s 字符串

 %zd  unsigned long

 */

 

#include <stdio.h>

 

/*

 0000 0001

 0000 0010

 0000 0000

 0000 0000

 0000 0000 0000 0000 0000 0010 0000 0001

 */

int main()

{

    // 0000 0000 0000 0000 0000 0000 0000 0010

    int i = 2;

    // 0000 0001

    char c = 1;

    char *p;

    p = &c;

   //*p = 10;

    printf("c的值是%d\n", *p);

    return 0;

}

 

void test()

{

    char c; // 1

    int a; // 4

    long b; // 8

    

    // 任何指针都占用8个字节的存储空间

    char *cp;

    int *ap;

    long *bp;

    printf("cp=%zd, ap=%zd, bp=%zd\n",

           sizeof(cp),

           sizeof(ap),

           sizeof(bp));

}

 

posted @ 2016-03-28 09:41  lance.xiang  阅读(108)  评论(0)    收藏  举报