C指针

 

指针概念

  程序运行的数据存储于内存中,以唯一的地址编号标识存储,称为内存地址。指针变量是指的是存储了内存地址的变量。

指针声明

  int *temp;

  int *temp;中的temp是变量名,*temp这样代表的是temp所指向的值(*:指针运算符,取其指向的内容)

指针定义

  int count = 5;

  temp = &count; (&表示取变量的地址符)

  不可以将变量直接赋值给指针,比如int *temp = 5;报错

指针类型

  指向变量

    前面的指针声明与定义已经说明

  数组指针

    数组名表示数组中首元素的地址。

    如:int a[10]; 那么a表示首元素地址,即 int *p = a; 可以使用*(p + 1)表示数组的第二个元素的值

    也可使用 *(a+1)表示第2个元素

    指针支持++和--操作

    如:

#include <stdio.h>
int main() {
    int a[6] = {3, 15, 6, 89, 63, 23};
    int *p = a;
    printf("%d\n", *(a+3));
    printf("%d\n", *(p+2));
    for (; p < (a+6); p++) {
        printf("num: %d\n", *p);
    }
    return 0;
}

输出结果为:

89
6
num: 3
num: 15
num: 6
num: 89
num: 63
num: 23

    

多维数组:

int *p2 = &b[1][0];
printf("%d\n", *p2);

则p2指向的是指向的是b[1][0]的值

 

  字符串与指针

    char str[] = " I love China ";
    // char *str = " I love China ";
    printf("%s\n", str);

 

 

    通过地址操作,直接操作字符串中的字符

  指向函数

    数据类型 ( * 指针变量名)(函数参数列表)

    int max(int a, int b) {
      return a + b;
    }
    int (*p)(int, int);
    p = max;
    int res = (*p)(3, 4);

    调用方式是(*指针变量名)(实参列表);

  指向指针的指针

       

       char * name[] = {"Follow me", "Basic", "Great Wall"};

    char **p;

    int i;
    for (i = 0;i < 5;i++){

      p = name + i;

      printf("%s\n", *p);

    } 

 

    数组中每一项存的是字符串数组指针,*p  取出来的为字符串的值

参考文章:

http://teren.itpub.net/post/15914/189516

posted @ 2012-09-07 00:34  haiyupeter  阅读(180)  评论(0编辑  收藏  举报