黑马程序员_C学习笔记之指针

    1>定义:通俗来讲,指针就是拿来存储地址的,存储的地址是谁的,此时指针就指向谁.

 

2.例如: int a = 10; int *p = &a; 此时p里面存储的是变量a的地址,就可以说指针p指向了a所在的存储空间, *p=20; 这里的*号代表访问p所指向的存储空间,并且修改里面的值为20

 

3.上面的例子中int *p =&a;只是代表p是个指针变量,*号是指针的标志,而下面的*号是访问所指向的存储空间,两者含义不一样

 

4.错误写法:int *p; *p=20;这种做法是错误的,因为此时p并没有给它赋地址,所以它此时是乱指的,不能随意改值

 

5.指针与数组:

    1>指针可以指向数组,也可以指向数组元素,数组名就是数组的地址,也是数组首元素的地址

    2>用指针遍历数组元素

    int a[3] = {1,2,3};

 

    int *p = a;

 

    for(int i=0; i<3;i++)

    {

        printf("%d\n",*(p+i));

    }

此时p的值并没有改变,也可以使用p++,如果使用p++则指针的地址会改变,这里的p+1代表指向下一个元素,并不是单纯的加1,具体加多少跟指针的类型有关,因为不同数据类型所占的字节数是不一样的

 

6.字符串:遍历字符串

 

char *s = "i love oc"; 这时定义的字符串是常量

 

for(;*s;s++)

{

    printf("%c",*s);

}

 

7.指针与函数:

    1>返回指针的函数: 类型说明符 *函数名(参数列表)

 

    2>指向函数的指针: 函数返回值类型 (*p)(参数列表)

    int sum(int a,int b)

    {

        return a+b;

    }

 

    int (*p)(int,int) = sum;

    此时指针p指向了函数,函数名就是函数地址

 

    3>调用函数:sum(2,4); p(2,4); (*p)(2,4);三种方式都可以调用sum函数

 

    4>可以利用指针把函数作为参数来传递
 

 

posted on 2014-06-25 01:33  chainLiu  阅读(235)  评论(0)    收藏  举报

导航