zoukankan      html  css  js  c++  java
  • 指针相关知识

    1.指针:内存地址

    指针变量:专门用一个变量来存放指针,这种变量成为指针变量。因此,一个指针变量的值就是某个内存单元的地址(或指针)

    “指针”是指地址,是常量,“指针变量”是指取值为地址的变量

    2.二级指针

    指针变量中主要存放目标变量的地址,这种指针称为一级指针。如果指针变量中存放的不是变量的地址,而是存放一级指针变量的地址,则这种指针称为二级指针。

    格式:

    【存储类型】  数据类型符    **变量名;

    例如:

    int a=5;

    int *p1;

    int **p2;

    p1=&a;

    p2=&p1;

    **p2=5;

    例子:利用二级指针来处理字符串

    #include <stdio.h>

    #define NULL 0

    void main()

    {

       char **p;

       char *name[]={"hello","good","world","bye"," "};

       p=name+1;

       printf("%x:%s  ",*p,*p);

       p+=2;

       while(**p!=NULL)

         printf("%s ",*p++);

    }

    运行结果:42003C:good  bye

    解释:第一个*p是输出p所指向的指针的地址(以十六进制形式%X输出),即字符串“good”的首地址。第二个*p是输出p的内容(即name[1])所指向的字符串(即"good")

    二级指针与指针数组的关系

    如:int **p;与*q[10];之间的关系

    指针数组名是二级指针常量;

    p=q;p+i是q[i]的地址;

    指针数组作形参时,int*q[]与int**q完全等价;但作为变量定义两者不同;

    系统只给p分配能保存一个指针值得内存区;而给q分配10块内存区,每块可保存一个指针值

    重剑无锋,大巧不工
  • 相关阅读:
    ZOJ 3818 Pretty Poem
    HDU 4597 Play Game
    HDU 4497 GCD and LCM
    CSU 1335 高桥和低桥
    UVA 10791 Minimum Sum LCM
    CSU 1119 Collecting Coins
    CSU 1120 病毒
    UVA 12169 Disgruntled Judge
    HDU 1301 Jungle Roads
    POJ 1258 Agri-Net
  • 原文地址:https://www.cnblogs.com/919czzl/p/4039145.html
Copyright © 2011-2022 走看看