| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2588 人关注过本帖
标题:新手 刚学了指针 球大神指教 下面都是什么意思?
只看楼主 加入收藏
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:17 
新手 刚学了指针 球大神指教 下面都是什么意思?
1.int * p[10];
2.int (* p)[10];
3.void (* p fun)()
4.( * ( void( * )( ) 0 ) )
2016-12-23 12:27
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
2016-12-23 12:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
第一个~指针数组
第二个~数组指针
第三个~指针函数--还写错了int(*p)();
第四个~写得不怎么规范,也许有语法问题~
第四个原型应该是这个东东吧~

void *(*p)()这个是一个指向指针函数的指针~
我这段时间也在忙于处理这些类如指针函数外面叠加指针这样的复杂变量类型,要花些时间去琢磨一下~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-23 12:42
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 3楼 九转星河
第四个 我们老师说有一本书里有  还是一个学长面试的题   
2016-12-23 12:45
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 3楼 九转星河
我记得编译是可以通过的  但是运行结果崩了
2016-12-23 12:49
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 4楼 cjj843138864
int *(*(*COM)[10])();看看这个东东~
在书上找到的~这是一个指向一个大小为10指针数组的一个指针,指针数组的类型为函数指针,函数的返回值类型为一个int 型的地址~我都懵了~不过学了函数指针这部分还是可以慢慢理解的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-23 12:58
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 6楼 九转星河
好的  谢谢
2016-12-23 13:00
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:4 
第4个要一步步拆开看

void( * )( )  无参函数指针定义,指向void fun(); 之类的函数

 ( void( * )( ) 0 )  强制转换,把 数字 0 强转为 无参函数指针

( * ( void( * )( ) 0 ) ) 取指向,指针0指向的 无参函数


[fly]存在即是合理[/fly]
2016-12-23 13:17
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

void fun()
{
    printf("fun funcation called\n");
}

int main()
{
    void *a = fun;
    printf("a = %p\n", a);

    int b = (int) a;
    printf("b = 0x%x\n", b);

    void (* c)() = NULL;
    printf("c = %p\n", c);

    c = fun;
    printf("c = %p\n", c);
    c();

    void *d = (void (*)()) b;
    printf("d = %p\n", d);

    void (*f)() = *((void (*)()) b);
    printf("f = %p\n", f);

    f();
    return 0;
}


[此贴子已经被作者于2016-12-23 13:32编辑过]

收到的鲜花
  • 九转星河2016-12-23 13:41 送鲜花  10朵   附言:我很赞同


[fly]存在即是合理[/fly]
2016-12-23 13:31
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 9楼 azzbcc
这个值得学习typedef一直是我编程的一块梗,特别是加上指针函数后,这个……对我来说真是一个很好的学习机会啊~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-23 13:38
快速回复:新手 刚学了指针 球大神指教 下面都是什么意思?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026584 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved