| 查看: 280 | 回复: 2 | |||
[交流]
【求助】请高手指点一个指针问题!!! 已有2人参与
|
|
char*(*c[10])(int **p) 这个语句的含义? [ Last edited by jianchaoyv on 2010-12-13 at 20:47 ] |
» 猜你喜欢
假如你的研究生提出不合理要求
已经有6人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有28人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复
zhougc
木虫 (正式写手)
黑社会老大
- 应助: 0 (幼儿园)
- 金币: 2590.9
- 散金: 120
- 帖子: 982
- 在线: 43.8小时
- 虫号: 393957
- 注册: 2007-06-06
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):辛苦了! 2010-12-14 09:51:26
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):辛苦了! 2010-12-14 09:51:26
|
这个问题很有意思, 让我们一层一层的剥掉它 char*(*c[10])(int **p) 应该见过这样的结构吧? int (*f)(int i) f是一个函数指针,表示指向函数的首地址,其实这个结构和int f(int i)是完全一样的。 因为f表示函数的名称,指向函数的首地址,而(*f)也是指向函数的首地址。 其实char*(*c[10])(int **p)这个表达式和这个结构类似,只是: int 对应于 char *,表示函数的返回值是字符指针; f 对应于 c[10],表示函数指针是一个数组; int i 对应于 int **p,表示参数是一个指向指针的指针; 那么c[10]表示函数指针又代表什么意思呢? 它其实是一个数组,这个数组中的每一个元素都是一个指向函数名的指针, (*c[10])可以理解为有十个元素的数组, 每个元素都是指向一个函数名的指针。 综合起来这个表达式可以理解成这个样子: 有一个十个元素的数组,每个数组都是一个指向一个函数名的指针; 这个被指向的函数,它的参数是int **p,表示一个指向指针的指针; 而这个函数的返回值是char *型。 建议你看一下指针数组和数组指针、函数指针和指针函数的区别。 |

2楼2010-12-13 22:32:19
★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):一样辛苦了,欢迎常来程序语言版! 2010-12-14 09:51:57
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):一样辛苦了,欢迎常来程序语言版! 2010-12-14 09:51:57
|
(下面部分定义跟例子百度来的) char *: 在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串。 指向函数的指针: 函数名是该代码段的首地址,比如“int *fun()”。 双重指针:指向指针的指针,相当于一个二维数组。 ------------------------------------------------------------------------ 看这个例子: #include void inc(int *val) { (*val)++; } main() { void (*fun)(int *); int a=3; fun=inc; (*fun)(&a); printf("%d" , a); } -------------------------------------------------------------- char*(*c[10])(int **p) 与例子中的 void (*fun)(int *)很相似, 貌似声明了一个指向函数的指针: 指针所指向的函数的返回值为Char* 类型, 指针的命名存储在C[10]数组中,也就是有一组10个的指向函数的指针, 指针所指向的函数的传参为int型双重指针**p。 以上解释,纯属个人理解,没有程序验证过。 ----------------------------------------------------------------------- 发晚一步,楼上已经有解。 ![]() [ Last edited by linyujack on 2010-12-13 at 22:39 ] |

3楼2010-12-13 22:36:52












回复此楼
