码迷,mamicode.com
首页 > 其他好文 > 详细

C学习笔记 - 指针

时间:2016-06-05 23:22:29      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

指针与数组

    int a[] = {1,2,3,4,5};
    int *p;
    p = a;
    printf("*a = %d\n",*a);
    printf("*p = %d\n",*p);
    printf("a[1] = %d\n",a[1]);
    printf("p[1] = %d\n",p[1]);

数组名就是数组的首地址。以上输出结果都一样。数组名基本上和指针等价。但a是常量,不可以进行a++或者a+=1等操作,而指针p则可以。

指针数组和数组指针

数据类型 *变量名[]
//首先它是一个数组,数组的元素是一个指针,也就是说每个元素存储的内容是一个地址
int *a[5];    

数据类型 (*变量名)[]
//首先它是一个指针,该指针指向一个数组
int (*a)[5];

指针函数和函数指针

类型标识符 *函数名(参数表)
//指针函数,它是一个函数,返回值是一个指针
int *f(x,y);

类型标识符 (*函数名)(参数表)
//函数指针
int (*f)(int x);

//函数地址赋给函数指针
f = &Function
f = Function

//使用函数指针调用函数
x = (*f)();   //这种方法明确的指出了是通过指针调用函数 
或者
x = f();

指针计算

自增自减:按它所指数据类型的长度进行增减

    int a = 10;
    int *p;
    p = &a;
    printf("%p\n",p);
    p++;
    printf("%p\n",p);

运行结果:

0x7fff5fbff7fc
0x7fff5fbff800

可以看到两个结果相差4,也就是int所占的字节长度。

 

C学习笔记 - 指针

标签:

原文地址:http://www.cnblogs.com/wangcb/p/5562040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!