【发布时间】:2018-01-13 19:36:55
【问题描述】:
有人可以帮我理解为什么我会收到此输出吗? 我对第一个 printf 感到困惑:f[2]=3 第二个printf我没问题。 整个第三个 printf 让我感到困惑。
#include <stdio.h>
#include <stdlib.h>
#define DIM 8
int*func(int*,int);
int k = 10;
void main(void)
{
int i;
int k = 11;
int f[DIM];
int*p1 = f+1;
int**p2 = &p1;
int*p3;
char* zf[]={"text0", "text1", "text2"};
for(i=0; i<DIM; i++)
f[i] = i % DIM + 1;
printf("a) i=%d, *f=%d, f[2]=%d, *(p1+5) =%d\n", i, *f, f[2], *(p1+5));
printf("b) k=%d, zf[1]=%s, **zf=%s, **p2=%d\n", k, zf[1], *zf, **p2);
p3 = func(f, k);
p1 = p1 + 3;
printf("c) k=%d, *p3=%d, f[7]=%c, *p1=%d\n", k, *p3, f[7], *p1);
}
int* func (int ff[])
{
int* p4 = (int*) malloc (sizeof(int));
*p4 = ff[3];
k = k - 3;
ff[k] = 65;
return p4;
}
输出:
a) i=8, *f=1, f[2]=3, *(p1+5) = 7
b) k=11, zf[1]=text1, **zf=text0, **p2=2
c) k=11, *p3=4, f[7]=A, *p1=5
【问题讨论】:
-
Terribru - 一堆单字母 var 名称。
标签: c arrays function pointers output