C指针初学

作者: 宝塔山上的猫 | 来源:发表于2017-07-05 23:53 被阅读47次

    C指针具有很重要的作用,就不多说了。
    其中学习指针首先要知道两个符号 * 和&。
    在类型后面和变量名前面添加* ,代表这是一个指针对象,如int * k,这代表一个指向int类型的指针k。
    而&则是取地址符,在c中如过有int k= 10;那么使用&k,则是取出i在计算机中的地址,而指针正是指向这个地址的。
    所以int * p = &k;这个表达式意思为int型指针p指向i的地址,如果要取出这个地址中所保存的值,那么直接使用 * p就可以了。
    这里要区别一件事,就是int * p是申明这是一个指向int型的指针,而*p则是取出这个指针所指对象的值。
    也就是:
    int k=10;
    int * p = &k; // 指针p指向k
    printf("获取指针p里面保存的值 %d \n", *p); // 打印出指针p中所保存的值。

    指针与数组

    指针与数组又是一个比较难的地方。
    一个数组的地址是其第一个元素的地址,因此在c中书写函数原型的时候,以下四种写法是等价的:

    int sum(int *ar, int n);
    int sum(int *, int n);
    int sum(int ar[], int n);
    int sum(int [], int);
    

    当然了,在函数原型中书写时可以省略参数名,但是在函数定义中是不能省略的,大家要注意。

    以下是数组与指针的一些简单使用:

    char ch[] = "I'am special";
    char  * pr = ch;
    printf("address of ch %p \n", ch); //查看ch的地址,数组的地址即其第一个元素的地址
    printf("address of pr %p \n", pr);  // 指针的值为ch的地址:
    printf("address of pr %c \n", *pr); //取出ch第一个元素的值, %c指的是获取单字符
    ch[5] = 'q';    // 修改ch第5个元素s为p
    printf("%c \n",ch[5] );     // 获取ch第五个元素
    printf("%c \n",*(pr+ 5));   // 通过指针获取ch第五个元素
    printf("%p \n",&ch[5] );// 获取ch第五个元素地址
    printf("%p \n", pr+5);// 通过指针获取ch第五个元素地址

    相关文章

      网友评论

        本文标题:C指针初学

        本文链接:https://www.haomeiwen.com/subject/yaechxtx.html