哥发个C的指针问题吧

d
dachu
楼主 (未名空间)

将军们如果做不出以后就不要说会C了。

int f(int x, int *py, int **ppz) {
int y, z;
**ppz += 1;
z = **ppz;
*py += 2;
y = *py;
x += 3;
return x + y + z;
}
int main() {
int c, *b, **a;
c = 4;
b =
a =
cout << f(c, b, a);
return 0;
}
g
goFan

你这种一看就是垃圾程序马上被毙掉没法 check in 的
w
wa0216

22

【 在 dachu (Big Chef) 的大作中提到: 】
: 将军们如果做不出以后就不要说会C了。
: int f(int x, int *py, int **ppz) {
: int y, z;
: **ppz += 1;
: z = **ppz;
: *py += 2;
: y = *py;
: x += 3;
: return x + y + z;
: }
: ...................

w
wa0216

嗯,所有的变量都要原地 initialized

【 在 goFan (够范) 的大作中提到: 】
: 你这种一看就是垃圾程序马上被毙掉没法 check in 的

d
dachu


【 在 goFan (够范) 的大作中提到: 】
: 你这种一看就是垃圾程序马上被毙掉没法 check in 的

嘿嘿,你说是多少吧
b
beetle1986

C没有cout, 你得写printf

d
dachu


【 在 wa0216 (SleepingDragon) 的大作中提到: 】
: 22

不对。再看。

w
wa0216

19

【 在 dachu (Big Chef) 的大作中提到: 】
: 不对。再看。

d
dachu


【 在 beetle1986 (beetle) 的大作中提到: 】
: C没有cout, 你得写printf

就算C++吧,无关大局,主要是指针的概念清不清楚。

a
aaddoo

19

【 在 dachu (Big Chef) 的大作中提到: 】
: 将军们如果做不出以后就不要说会C了。
: int f(int x, int *py, int **ppz) {
: int y, z;
: **ppz += 1;
: z = **ppz;
: *py += 2;
: y = *py;
: x += 3;
: return x + y + z;
: }
: ...................

d
dachu

19对了。不错。

考过三个人,都没作对。

【 在 aaddoo (nothing) 的大作中提到: 】
: 19

G
Giusto

19
跟指针没多大关系,主要是C的函数是传值的,跟fortran传地址不一样。

r
raam

19
s
subsub1

5+7+7
t
ts78

z = 4 + 1
y = 4 + 1 + 2
x = 4 + 3

【 在 dachu (Big Chef) 的大作中提到: 】
: 将军们如果做不出以后就不要说会C了。
: int f(int x, int *py, int **ppz) {
: int y, z;
: **ppz += 1;
: z = **ppz;
: *py += 2;
: y = *py;
: x += 3;
: return x + y + z;
: }
: ...................

C
Caravel

这个太简单了,但是有巨复杂的指针

【 在 dachu (Big Chef) 的大作中提到: 】
: 将军们如果做不出以后就不要说会C了。
: int f(int x, int *py, int **ppz) {
: int y, z;
: **ppz += 1;
: z = **ppz;
: *py += 2;
: y = *py;
: x += 3;
: return x + y + z;
: }
: ...................

w
wa0216

其实真正烧脑的是mutual recursion,指针一旦明白了,没啥难的

【 在 Caravel(克拉维尔) 的大作中提到: 】
<br>: 这个太简单了,但是有巨复杂的指针
<br>

i
iWater

Fortran参数的压栈顺序是什么方向的?忘了……

【 在 Giusto (新中国联邦北美大都督) 的大作中提到: 】
: 19
: 跟指针没多大关系,主要是C的函数是传值的,跟fortran传地址不一样。

l
lexabc

If you write such code during interview, you fail.
You deference pointers without first checking null.

【 在 dachu (Big Chef) 的大作中提到: 】
: 将军们如果做不出以后就不要说会C了。
: int f(int x, int *py, int **ppz) {
: int y, z;
: **ppz += 1;
: z = **ppz;
: *py += 2;
: y = *py;
: x += 3;
: return x + y + z;
: }
: ...................

T
TheMatrix

除了这个,还有函数指针和const的用法,这属于语法问题。

【 在 dachu (Big Chef) 的大作中提到: 】
: 将军们如果做不出以后就不要说会C了。
: int f(int x, int *py, int **ppz) {
: int y, z;
: **ppz += 1;
: z = **ppz;
: *py += 2;
: y = *py;
: x += 3;
: return x + y + z;
: }
: ...................

G
Giusto

left->right

【 在 iWater (aspire to inspire before i expire) 的大作中提到: 】
: Fortran参数的压栈顺序是什么方向的?忘了……

g
geneontology

5+7+7
h
hhmmss


学C++的话这是第一堂课的题

【 在 dachu (Big Chef) 的大作中提到: 】
: 将军们如果做不出以后就不要说会C了。
: int f(int x, int *py, int **ppz) {
: int y, z;
: **ppz += 1;
: z = **ppz;
: *py += 2;
: y = *py;
: x += 3;
: return x + y + z;
: }
: ...................

T
Tatou

什么年头了,现在起码应该问rvalue reference之类的问题

d
dachu

菌斑的水平比现在市面上找工的平均水平高不少。

MAGA不用将军们应该没戏。床普不懂中文,不知道得菌斑者的天下。