黑马程序员技术交流社区
标题:
C语言指针
[打印本页]
作者:
Meracle
时间:
2015-11-14 17:29
标题:
C语言指针
指针,其实也是一种数据类型,占有四个字节,不过其中放置的是某个地址(也就可以理解成它指向了某一块内存空间)。
C语言中经常操作地址,所以指针的引入使我们更加便利的执行某些地址的操作。
1、某些容易混淆的指针定义。
int *p;int类型的指针,它所指向的是一个int类型的变量所在的内存区域。
int *p[n];int类型的指针数组。这是一个数组,里面存放了n个int *类型的变量。
int (*p)[n];int类型的数组指针。这是一个指针,可以看作是int(*)[n],它指向了一个数组的首地址,这个数组里面含有n个int类型的变量。
int *fun(int a);带有一个int类型参数,返回值是一个int类型指针的函数。
int (*fun)(int a);这是一个函数指针,这个指针指向了一个函数的首地址,这个函数有个int类型的参数和int类型的返回值。
2、const修饰的指针
const int *p;const修饰的是int *,也就说p指向的地址类型 int,而且是不可变的。p的指向可变,但是所指向的地址中的内容不能改变
int * const p;const修饰的是p,当const修饰p的时候,表示这个指针的内容不能改变,也就是它的指向不能改变,但是它所指向的内存空间并没有被const修饰是可以改变的。
3、指针移动操作。
int a[10] = {1,2,3,4,5,6,7,8,9,0};
int *p = a;
当前p指向的是a的首地址,*p(也就是指向的内存空间的内容)也等于a[0];
当p进行++操作之后,因为它是int类型的指针,它每次++就会指向下一个int类型,也就会移动到a[1]的位置,当前*p 就会等于a[1];
另外一种就是(&a)+1,其中&a可以理解为将数组看成一个整体,取其地址,在这个基础上加一,其实移动了10个int的大小。
作者:
arhui
时间:
2015-11-14 21:14
总结的不错喔 指针有点难度的吧
作者:
小贼船
时间:
2015-11-14 21:55
指针很晕
作者:
唐阿丽
时间:
2015-11-15 08:13
谢谢分享啦
作者:
liuchuan_alex
时间:
2015-11-15 09:42
支持一下
作者:
fenghun1991
时间:
2015-11-15 13:10
多谢分享,对初学者非常有用
作者:
沐小妖mavs
时间:
2015-11-15 21:02
比如int*p=a,可以这么理解,p是存储a变量的地址
作者:
大雕会飞
时间:
2015-11-15 21:21
学习了,真的不错!!
作者:
蜗牛飞翔
时间:
2015-11-15 23:13
学习了 ,先看看再说
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2