ポインタについて学びます

# include <stdio.h>
int main()
{
    int x = 3;
    int* p = &x;          /*星p即是x的指针,又定义了一个p   */
    printf("%p\n", &x);   /*00B3FD58      x的地址*/
    printf("%p\n", &p);   /*00B3FD4C      p的地址      */
    printf("%d\n", x);    /*3*/
    printf("%d\n", *p);   /*3   *p的值就是x   */
    printf("%d\n", &x);   /*11795800   这也是x的地址,只不过是用十进制     */


}

INT 全体として、これ以下は、p =&X pがxのアドレスであり、 Pは、xの値であります

# include <stdio.h>
int huhuan(int* p, int* q);
int main()
{
    int a = 3;
    int b = 5;

    huhuan(&a, &b);         /*与下面的函数相对应,int*类型对应&a和&b*/
    printf("a=%d,b=%d\n", a, b);
    return 0;
}
int huhuan(int* p/*a的地址*/, int* q/*b的地址*/)     /*int*类型的要对应&a和&b*/
{
    int t;
    t = *p;        /*不要以为*p就是指针类型了      其实*p是int类型的        *p的值是p中地址所对应的变量值        */
    *p = *q;     /*很重要!!!!!!!!是此程序的关键!!!!!!*p指向a,所对应的存储空间就是a,*p完全就是a,所以在函数中终于找到了a和b*/
    *q = t;        /*这就做到了从函数中搞到了a和b*/
    return 0;
}

この手順は、関数を使用し、二人の人物を交換するために使用される
機能を使用しなければならないと仮定し、それは、従来の方法、外部とは無関係で変数の関数ではないでしょうが、また、2つの値を返すことができない、あなたが使用する必要があります。ポインタ

# include <stdio.h>
int f(int* parr, int length);
int main()
{
    int a[5] = { 1,3,5,6,8 };
    f(a, 5);
    return 0;
}
int f(int* parr, int length)     
{
    int i;
    for (i = 0; i < length; i++)
    {
        printf("%d ", *(parr + i));     /*parr中储存了a[0]的地址,所以parr+i代表了数组中其余元素的地址,因为数组中每一个元素的地址是连在一块的*/
                                        /*所以*p(parr+i)能输出数组中所有元素*/
    }
    return 0;
}
# include <stdio.h>
int main()
{
    int a[5];/*a是数组名,5是元素的个数,元素就是变量*/
    int b[5];
    /*a=b error a是常量不能变*/
    printf("%#x\n", &a[0]);
    printf("%#x\n", a);     /*一维数组名是个指针常量,不需要再用取地址符号了*/
    return 0;
}

出力は次のとおり
0x92fdf8
0x92fdf8
要約:一次元配列名がポインタ定数で、一次元配列の最初のエレメントのアドレスであります

# include <stdio.h>
int f(int* parr, int length);
int main()
{
    int a[5] = { 1,5,6,7,8 };
    printf("%d\n", a[3]);
    f(a, 5);
    printf("%d\n", a[3]);
    return 0;
}
int f(int* parr, int length)      /*为什么要这么麻烦要用指针,还是跟前面一样,在函数内如果不用指针,
                                  函数内定义的就算是和main函数里的一样,它们的值也一点关系都没有,所以要用到指针才能把函数内的值搞到外去*/
{
    parr[3] = 88;     /*等价于   *(parr+3)  */
    return 0;
}

心に留めておくためには、&[0] [0]のアドレスを表す変数へのポインタであります

おすすめ

転載: www.cnblogs.com/panghushalu/p/11793954.html