指针和数组
来源:互联网 发布:淘宝达人的账号简介 编辑:程序博客网 时间:2024/06/10 15:52
指针,数组
指针和数组没有关系!!!!
指针数组
指针数组是数组,是一个存放指针的数组
int *arr[10]; 因为[ ] 比 * 优先级高,所以arr先和[ ]结合,所以它是一个数组
char *arr[10];
数组指针
数组指针是指针,指向一个数组的指针
int (*p)[10];
p是一个指针变量,指向的是具有十个元素的整型数组
然后我们来看这个:
int (*parr[10])[5];
*parr[10]; 是个指针数组
int (*)[5]; 是个数组指针
所以总体就是,它是一个指针数组,里面的指针都指向五个元素的一维数组
指针和数组的定义和声明
定义是不存在的东西要让他存在,声明是让知道有这么个东西的存在,又说声明就是定义变量本身
之前我们声明全局变量的时候是这样的: extren int a;
可是如果我们这么写:
//test.cchar arr[] = "abcdef";//main.cint main()
{
printf("%s\n",arr); return 0;}
会输出什么呢?
这么写的话,因为char arr[ ];时arr是一个七个元素的数组,会开辟七个空间,但声明时,会把arr当成指针来识别,别且只访问四个字节,如题,会将abcd赋给指针arr,并且会把abcd当成一个地址
所以这么写不一定能运行。
如果定义成指针,声明成数组呢?
char *p = "abcdef";
extren char p[ ];
指针指向的是常量字符串,且p是四个字节的,在识别char类型数组时,认为数组大小是4。访问数组是,输出的是p的地址的四个部分
所以不推荐这两种写法
函数指针
所以,函数也是有地址的,而且函数名和&函数名都表示的是函数的地址
所以就有函数指针
int (* pfun)(); //指向返回值为int,参数列表为空的函数的指针
void (*pfun)(); //指向返回值为void,参数列表为空的函数的指针
跟数组指针还是有点类似的,不过还要注意返回值,是不是想到了指针数组。。 int *arr[10]
而 int *pfun(); //看清楚,这是个函数,返回值为整型指针的函数!!!!
来看这两个:
(*(void (*)())0);void (*signal(int, void(*)(int)))(int);
代码1:(void (*)( )) 这一段,里面是个函数指针,外面带括号就是强制转换,所以把0强制转换成函数指针,再解引用,就是可以理解为 地址(); 这个样子,这里地址 == 0,因为上面提到过函数名就是它的地址,0( ); 这个后面带括号带封号,就是函数调用
代码2:signal(....)是个函数,参数是int和函数指针,而signal函数的返回值是函数指针,这个指针指向的是返回值为void *,参数为int的函数
函数指针数组
int (*parr[10]) ();
因为parr先河[ ] 结合,所以它是个数组,其次又是个指针,最后是函数,所以是函数指针数组
一类指针放在一个数组中,都会返回值为int,参数为空的函数
函数指针的数组的指针
指向函数指针数组的指针
一个指针,指向的是一个函数指针数组
定义: void (*(*ppfunarr)[10])(const char*);
综合对比:
函数指针 int (*pfun)(int,int);
函数指针数组 int (*pfunarr[5])(int, int);
函数指针数组的指针: int (*(*ppfunarr)[5])(int, int)
!!!!关键在于符号的优先级!!!!
还有指向函数指针数组指针数组的指针等等可以无限延伸。。。不过代码是写给人看的,基本不会用到
阅读全文
0 0
- 指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- Android IntentService源码分析
- js中的|| 与 &&
- Leetcode 6. ZigZag Conversion
- AdPredictor引发的一系列故事
- DSL的诞生 | 复杂sql转成Elasticsearch DSL深入详解
- 指针和数组
- 陈越《数据结构》第七讲 图(中)二
- Eclipse Java注释模板设置详解
- 2017青岛区域赛I题The Squared Mosquito Coil
- Windows 下jupyter notebook 修改打开的浏览器
- 关于SpringMVC中 HTTP 405
- 8.输入DStream之Kafka数据源实战(基于Receiver的方式)
- Vue学习日志:Class 与 Style 绑定(5)
- 总结-2017/11/16