1. 程式人生 > >c語言的指標的一些簡單示例

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;