c语言的指针的一些简单示例

#include<stdio.h>

void maina()
{
    /**
    char *names[] = {"Miller","Jones","Anderson"};
    printf("%c\n",*(*(names+1)+2));
    printf("%c\n",names[1][2]);
    */
    int i=2;
    int j=3;
    printf("%d\n,:%d\n",&i,&j);
}
void mainb()
{
    int num=4;
    int *pi = &num;

    printf("num的地址是:%d,;值是:%d\n",&num,num);
    printf("pi的地址是:%d,;值是:%d,-----%d\n",&pi,pi,*pi);
}
void mainc()
{
    int num;
    int *pi = &num;
    void *pv = pi;
    pi = (int*) pv;
    printf("pi的值: %p\n",pi);
    printf("pi的值:%p\n",pi);
}
//给指针加上一个整数实际上加的数是这个整数和指针数据类型对应字节数的乘积
void maind()
{
    short s;
    short *ps = &s;
    char c;
    char *pc = &c;
    printf("ps之前的内容:%d\n",ps);
    ps = ps+1;
    printf("ps之后的内容:%d\n",ps);
    printf("pc之前的内容:%d\n",pc);
    pc = pc+1;
    printf("pc之后的内容:%d\n",pc);
}
//从指针减去整数,地址值会减去数据类型的长度和整数值的乘积。
void maine()
{
    int vector[]={28,41,7};
    int *pi = vector+2;

    printf("%d\n",*pi);
}
void mainf()
{
    int vector[] = {28,41,7};
    int *p0 = vector;
    int *p1 = vector+1;
    int *p2 = vector+2;
    printf("p2-p0:%d\n",p2-p0);
    printf("p0-p1:%d\n",p0-p1);
    printf("p0:%d,p1:%d,*p0:%d,*p1:%d\n",p0,p1,*p0,*p1);
    printf("*p0-*p1:%d\n",*p0-*p1);
}
//指向常量的常量指针
void maing()
{
    const int limit = 500;
    const int * const cpci = &limit;
    const int * const * pcpci = &cpci;

    pcpci = &cpci;
    printf("%d\n",*cpci);
    printf("%d\n",**pcpci);
}
//指向非常量的常量指针
//可以声明一个指向非常量的常量指针,这么做意味着指针不可变,但是它指向的数据可变
void main()
{
    int num;
    /**
        以下声明表示:
        1,cpi必须被初始化为指向非常量变量。
        2,cpi不能被修改
        3,cpi指向的数据可以被修改
    */
    int *const cpi = &num;
    printf("cpi:%d====&cpi:%d====*cpi:%d/n",cpi,&cpi,*cpi);
    //*cpi = 25;

猜你喜欢

转载自blog.csdn.net/youjiangtengwan1/article/details/83858876