Redian新闻
>
int (*b)[2]; 是什么意思?
avatar
int (*b)[2]; 是什么意思?# Programming - 葵花宝典
e*e
1
【 以下文字转载自 SanFrancisco 讨论区 】
发信人: evolve (上班时间灌水一篇罚十刀), 信区: SanFrancisco
标 题: 请大家伸出援手,帮助昏迷多天中的留学生!
发信站: BBS 未名空间站 (Wed Feb 10 20:57:32 2010, 美东)
请大家帮忙顶上头条!谢谢!
2010年2月3日晚11点半,在斯坦福大学校园,来自哈尔滨的26岁的王一超同学骑自
行车被汽车撞倒,颅脑严重受损,现在仍在斯坦福大学医学中心ICU昏迷不醒。
王一超小学上复华小学、初中上69中,高中上师大附中, 大学考上哈尔滨工业大学,2007年以优
异成绩毕业,取得给排水高分子化学双学士学位。2008年7月 王一超赴新加坡南洋理工大学水处理专业
攻读博士学位。 2009年12月9日到美国斯坦福大学做实验研究。没想到不到2个月就罹此惨祸!闻此事故,
家人痛哭流涕,亲戚痛断肝肠,老师、同学、朋友扼腕痛惜。
因为保险只有30万上限,因动手术早已用完,医院已多次问到医疗费用问题并曾表
示过希望渺茫欲放弃治疗。经过多方争取和努力,现在情况已经有所好转,生
avatar
c*e
2
以前听说破解后能用tmobile的7块钱的tzone,现在没有tzone了,请问破解了的iphone
3gs能在tmobile上上网吗?需要加什么服务需要破解吗?多谢了!
avatar
v*1
3
IEEE的一个会,方向是wireless communication.
有兴趣的请站内联系。
另外,请附上您的name, title, affiliation, edas的帐号.
avatar
t*s
4
会场感谢
avatar
p*w
5
顶一下。好人多保重。

【在 e****e 的大作中提到】
: 【 以下文字转载自 SanFrancisco 讨论区 】
: 发信人: evolve (上班时间灌水一篇罚十刀), 信区: SanFrancisco
: 标 题: 请大家伸出援手,帮助昏迷多天中的留学生!
: 发信站: BBS 未名空间站 (Wed Feb 10 20:57:32 2010, 美东)
: 请大家帮忙顶上头条!谢谢!
: 2010年2月3日晚11点半,在斯坦福大学校园,来自哈尔滨的26岁的王一超同学骑自
: 行车被汽车撞倒,颅脑严重受损,现在仍在斯坦福大学医学中心ICU昏迷不醒。
: 王一超小学上复华小学、初中上69中,高中上师大附中, 大学考上哈尔滨工业大学,2007年以优
: 异成绩毕业,取得给排水高分子化学双学士学位。2008年7月 王一超赴新加坡南洋理工大学水处理专业
: 攻读博士学位。 2009年12月9日到美国斯坦福大学做实验研究。没想到不到2个月就罹此惨祸!闻此事故,

avatar
s*g
6
Yes
avatar
h*s
7
指向长度为2整形数组的指针吧。。。

【在 t*s 的大作中提到】
: 会场感谢
avatar
c*e
8
可以具体说说吗,现在好像tmobile有一个9.99的data plan,加了那个就可以了吗,需
要破解吗,多谢了!
avatar
j*a
9
你这肯定是错的
avatar
k*z
10
这个能用skype么?

【在 c*****e 的大作中提到】
: 可以具体说说吗,现在好像tmobile有一个9.99的data plan,加了那个就可以了吗,需
: 要破解吗,多谢了!

avatar
h*s
11
唉,看了这个问题就知道难怪c++没落。。。不过这个应该算c的吧。。。

【在 j*a 的大作中提到】
: 你这肯定是错的
avatar
d*n
12
是啊,呵呵。
来试这个。
char (*(*x[3])())[5]

【在 j*a 的大作中提到】
: 你这肯定是错的
avatar
S*I
13
this one is correct, all others are nonsense.

【在 h*******s 的大作中提到】
: 指向长度为2整形数组的指针吧。。。
avatar
t*s
14
don't think so

【在 j*a 的大作中提到】
: 你这肯定是错的
avatar
t*s
15
correct!
tested using gdb
thanks!

【在 h*******s 的大作中提到】
: 指向长度为2整形数组的指针吧。。。
avatar
j*a
16
c真难哪

【在 t*s 的大作中提到】
: don't think so
avatar
h*s
17
这种题目最bt了。。。
x是一个函数指针数组,大小为3
指向的函数无参数,返回指向char[5]的指针。。。

【在 d****n 的大作中提到】
: 是啊,呵呵。
: 来试这个。
: char (*(*x[3])())[5]

avatar
t*s
18
都是高手啊
我把b往其他长度数组指gcc还知道报警告

【在 t*s 的大作中提到】
: 会场感谢
avatar
d*n
19
鼓掌!!

【在 h*******s 的大作中提到】
: 这种题目最bt了。。。
: x是一个函数指针数组,大小为3
: 指向的函数无参数,返回指向char[5]的指针。。。

avatar
r*t
20
这个跟“最新某公司onsite面试题”比起来还算是简单的。

【在 h*******s 的大作中提到】
: 这种题目最bt了。。。
: x是一个函数指针数组,大小为3
: 指向的函数无参数,返回指向char[5]的指针。。。

avatar
h*s
21
要是能用电脑的话
好像有个软件还是网站叫c++decl还是cdecl专门把这种诡异的声明翻译成英语的

【在 r****t 的大作中提到】
: 这个跟“最新某公司onsite面试题”比起来还算是简单的。
avatar
t*t
22
there was a tool called cdecl, that translate between english and C. now the
tool seems to disappear from default linux installation.

【在 h*******s 的大作中提到】
: 要是能用电脑的话
: 好像有个软件还是网站叫c++decl还是cdecl专门把这种诡异的声明翻译成英语的

avatar
h*s
23
放狗搜了一下,现在弄了个网站
http://cdecl.org/
不过我还真不知道这东西以前在linux发行版里面

the

【在 t****t 的大作中提到】
: there was a tool called cdecl, that translate between english and C. now the
: tool seems to disappear from default linux installation.

avatar
t*t
24
it is a good tool, i think it's from other unix variation, such as solaris.
maybe there is some license issue...

【在 h*******s 的大作中提到】
: 放狗搜了一下,现在弄了个网站
: http://cdecl.org/
: 不过我还真不知道这东西以前在linux发行版里面
:
: the

avatar
r*t
25
这个 thrust 在本版推荐介绍已经多年了。

【在 h*******s 的大作中提到】
: 要是能用电脑的话
: 好像有个软件还是网站叫c++decl还是cdecl专门把这种诡异的声明翻译成英语的

avatar
f*y
26
谭浩强的书要熟读啊。

【在 t*s 的大作中提到】
: 会场感谢
avatar
h*i
27
你记住右左原则就不需要这东西。

【在 h*******s 的大作中提到】
: 放狗搜了一下,现在弄了个网站
: http://cdecl.org/
: 不过我还真不知道这东西以前在linux发行版里面
:
: the

avatar
j*a
28
有啥窍门?

【在 h**i 的大作中提到】
: 你记住右左原则就不需要这东西。
avatar
h*s
29
大概是按括号优先级,括号内从右向左念吧

【在 j*a 的大作中提到】
: 有啥窍门?
avatar
h*i
30
这么着名的东西居然没有普及
右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,
就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过
程直到整个声明解析完毕。
The right-left rule: Start reading the declaration from the
innermost parentheses, go right, and then go left. When
you encounter parentheses, the direction should be reversed.
Once everything in the parentheses has been parsed, jump
out of it. Continue till the whole declaration has been
parsed.

【在 h*******s 的大作中提到】
: 大概是按括号优先级,括号内从右向左念吧
avatar
h*s
31
学习了,看过好几次,还是不太懂。。。

the





【在 h**i 的大作中提到】
: 这么着名的东西居然没有普及
: 右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,
: 就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过
: 程直到整个声明解析完毕。
: The right-left rule: Start reading the declaration from the
: innermost parentheses, go right, and then go left. When
: you encounter parentheses, the direction should be reversed.
: Once everything in the parentheses has been parsed, jump
: out of it. Continue till the whole declaration has been
: parsed.

avatar
X*r
32
Frankly I never get what is so hard about reading variable declarations.
As long as you can read C expressions, you can read variable declarations.
e.g. int (*b)[2] => (*b)[2] is a int.
So (*b) is an array of 2 ints, and b is a pointer to an array of 2 ints.
The same operator precedence applies here, too.
Another slightly more complex example
double (*(*f)(int (*)(int)))(double);
==> (*(*f)(int (*)(int)))(double) is a double
==> (*(*f)(int (*)(int))) is a function from a double to a double
==> (*f)(int (*)(int)) is a pointer to a function from double to a double
==> (*f) is a function from "int (*)(int)" to a pointer to a function from
double to a double,
whereas "int (*)(int)" is a pointer to a function from an int to an int
==> f is a pointer to a function from [a pointer to a function from a
double to a double] to [a pointer to a function from an int to an int].

【在 h*******s 的大作中提到】
: 大概是按括号优先级,括号内从右向左念吧
avatar
t*t
33
not so hard for a clear brain. but frankly, i guess 80% of brains are not so
clear to decipher this mess, while 99% of brains are not as clear as yours.
..including my own.

【在 X****r 的大作中提到】
: Frankly I never get what is so hard about reading variable declarations.
: As long as you can read C expressions, you can read variable declarations.
: e.g. int (*b)[2] => (*b)[2] is a int.
: So (*b) is an array of 2 ints, and b is a pointer to an array of 2 ints.
: The same operator precedence applies here, too.
: Another slightly more complex example
: double (*(*f)(int (*)(int)))(double);
: ==> (*(*f)(int (*)(int)))(double) is a double
: ==> (*(*f)(int (*)(int))) is a function from a double to a double
: ==> (*f)(int (*)(int)) is a pointer to a function from double to a double

avatar
h*s
34
老大们,在实际工作里遇到这种长声明的情况多么?

int].

【在 X****r 的大作中提到】
: Frankly I never get what is so hard about reading variable declarations.
: As long as you can read C expressions, you can read variable declarations.
: e.g. int (*b)[2] => (*b)[2] is a int.
: So (*b) is an array of 2 ints, and b is a pointer to an array of 2 ints.
: The same operator precedence applies here, too.
: Another slightly more complex example
: double (*(*f)(int (*)(int)))(double);
: ==> (*(*f)(int (*)(int)))(double) is a double
: ==> (*(*f)(int (*)(int))) is a function from a double to a double
: ==> (*f)(int (*)(int)) is a pointer to a function from double to a double

avatar
t*t
35
当然不多了, 你自己写程序这么写么?
以前常见的一个复杂玩艺是
void (*signal(int sig, void (*disp)(int)))(int);
但是现在一般都这样写:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);

【在 h*******s 的大作中提到】
: 老大们,在实际工作里遇到这种长声明的情况多么?
:
: int].

avatar
h*s
36
~~~长出一口气
我查了一下typedef 在c89里面就是关键字了
为啥早年人们不用后一种写法呢,看起来清爽多了啊

【在 t****t 的大作中提到】
: 当然不多了, 你自己写程序这么写么?
: 以前常见的一个复杂玩艺是
: void (*signal(int sig, void (*disp)(int)))(int);
: 但是现在一般都这样写:
: typedef void (*sighandler_t)(int);
: sighandler_t signal(int signum, sighandler_t handler);

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。