| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4404 人关注过本帖, 1 人收藏
标题:测试下指针函数到底懂了没有?接收挑战吗?
只看楼主 加入收藏
beichei5d
Rank: 4
等 级:业余侠客
威 望:2
帖 子:89
专家分:270
注 册:2016-3-8
收藏
得分:4 

你现在所偷的懒,都将成为以后扇你的巴掌!共勉吧。。。
2017-05-16 09:26
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用Emotiona在2017-5-16 08:37:59的发言:

试了一下,不会用啊. 我定义的全局变量。然后直接点击编译器运行, 错误。
#include<stdio.h>
#include<stdlib.h>

const char *argv[]={"E:\\>E:\\Codebloks_C\\1Test.exe", "123456", "789"};

int main(int argc, char *argv[])
{}



我测试是没有毛病的   不知道你的不行是啥意思  也不知道你的编译信息你看了没有  目测如果仅仅这几行代码的话 是无法通过编译的
至少函数无返回值 这块就过不去

DO IT YOURSELF !
2017-05-16 09:29
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 22楼 wp231957
还是昨天的代码。我的意思是直接通过编译器进行命令行操作, 不打开cmd

#include<stdio.h>
#include<stdlib.h>

const char *argv[]={"E:\\>E:\\Codebloks_C\\1Test.exe", "123456", "789"};

int main(int argc, char *argv[])
{


    int a, b, c, d, e, f;

    a = argv[1][2];
    b = **argv;
    c = *(++argv)[0];
    d = atoi(*argv + 1);
    e = atoi(&(*argv)[1]);
    f = *++argv[0];
    printf("%c %c %c %d %d %c", a, b, c, d, e, f);
    return 0;
}

//3 E 1 23456 23456 2


[此贴子已经被作者于2017-5-16 10:01编辑过]

2017-05-16 10:00
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 23楼 Emotiona
vs 下测试没有问题

DO IT YOURSELF !
2017-05-16 10:08
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 24楼 wp231957
谢谢了! codebloks  直接char *argv[] = "" 会被警告, 改成  const char *argv[]没警告 但是不能正常运行。等下试试vs
2017-05-16 10:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
@Emotiona

测试下指针函数到底懂了没有?接收挑战吗?


int (*((*p)()))[]=NULL;
看看这个数据类型怎么理解?~~~~~

PS:如果这个觉得简单的话可以看看这个怎么理解~

int (*((*p2)(int (*((*[])()))())))()=NULL;~

[此贴子已经被作者于2017-5-23 16:28编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 14:38
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
int ( *( ( *p )() ) )[] = NULL;

这个你写错了吧?怎么都感觉多了一对括号。
int ( *( *p )() )[] = NULL;


你写的我理解不了,但是下面的这句,很容易。 p 是一个函数指针,函数的类型是 无参数,返回一个指针,类型是 int数组

[此贴子已经被作者于2017-5-23 19:49编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-23 19:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 27楼 renkejun1942
那个括号的确可以省略~
第二个是指针函数的参数是一个指针数组函数~返回值是一个int型的指针函数~然后以该值作为指针函数的指针值再执行多一次指针函数~返回值是int型~

[此贴子已经被作者于2017-5-23 20:41编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 20:33
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 28楼 九转星河
第二个我就扫了一眼,然后一堆括号,我自动放弃了。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-23 20:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 29楼 renkejun1942
其实第二个理解了就有种豁然开朗的感觉~说得生动一点就是指针函数的返回值是一个指针函数类型~然后再以该值调用多一次指针函数~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 20:48
快速回复:测试下指针函数到底懂了没有?接收挑战吗?
数据加载中...
 
   



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

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