Pointer详解

#include <stdlib.h>

typedef struct LNode{
        int number;
        int password;
        struct LNode * next; 
}LNode, *Linklist;

void swap1(int a, int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

void swap2(int *a, int *b)
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}

void swap3(int &a, int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

int main()
{
    int i, j;
    int *s;
    s = (int *)malloc(sizeof(int));
    *s = 5;
    free(s);

    s = new int;
    *s = 5;
    delete s;

    int *p;
    p = new int[10];//p = (int *)malloc(10*sizeof(int));
    p[0] = 0;
    *(p+1) = 1;
    *(p+9) = 9;
    delete [] p; //free(p);

    char **A;
    A = (char **)malloc(10*sizeof(char *)); //A = new char *[10]; 
    for(i=0;i<10;i++)
        A[i] = (char *)malloc(10*sizeof(char)); //A[i] = new char[10]; 
    i = sizeof(char *);
    A[0][0] = 'a'; //**A = 'a';
    *(*A+1) = 'b'; //A[0][1] = 'b';
    *(*(A+1)) = 'c'; //A[1][0] = 'c';
    *(*(A+1)+1) = 'd'; //A[1][1] = 'd';

    for(i=0;i<10;i++)
        free(A[i]); //delete [] A[i];
    free(A); //delete [] A;
    //A[0][0] = 'a';

    char ***B;
    B = (char ***)malloc(10*sizeof(char **)); //B = new char **[10];
    for(i=0;i<10;i++){
        B[i] = (char **)malloc(10*sizeof(char *)); //B[i] = new char *[10];
        for(j=0;j<10;j++)
            B[i][j] = (char *)malloc(10*sizeof(char)); //B[i][j] = new char[10];
    }
    B[0][0][0] = 'a'; // ***B = 'a';
    *((**B)+1) = 'b'; // B[0][0][1] = 'b';
    *(*(*(B+1)+1)+1) = 'c'; // B[1][1][1] = 'c';

    for(i=0;i<10;i++){
        for(j=0;j<10;j++)
            free(B[i][j]); //delete [] B[i][j];
        free(B[i]); //delete [] B[i];
    }
    free(B); //delete [] B;

/*
    typedef struct LNode{
        int number;
        int password;
        struct LNode * next; 
    }LNode, *Linklist;
*/
    Linklist H;
    H = (Linklist)malloc(sizeof(LNode)); 
    //H = new LNode;
    H->number = 1;
    (*H).password = 2;//H->password = 2;
    H->next = NULL; 
    free(H); //delete H;

    H = new LNode[10];
    i = sizeof(LNode);
    j = sizeof(Linklist);
    H->number = 1;
    H[1].number = 2;
    (H+2)->number = 3;
    (*(H+3)).number = 4;
    delete [] H;

    int a, b;
    a = 1;
    b = 2;
    swap1(a, b); //void swap1(int a, int b)
    swap2(&a, &b); //void swap2(int *a, int *b)
    swap3(a, b); //void swap3(int &a, int &b)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值