C,44字节,41字节
int*n(int*s,int a){return a?n(&s,a-1):s;}
您可以通过执行以下操作对其进行测试:
int main(void) {
char* s = "stackoverflow";
/* Test Case 0 */
int* a = n(s,0);
printf("'%s'\n", a);
/* Test Case 1 */
int* b = n(s,1);
printf("['%s']\n", *b);
/* Test Case 2 */
int** c = n(s,2);
printf("[['%s']]\n", **c);
/* Test Case 3 */
int*** d = n(s,3);
printf("[[['%s']]]\n", ***d);
/* Test Case 4 */
int********** e = n(s,10);
printf("[[[[[[[[[['%s']]]]]]]]]]\n", **********e);
return 0;
}
输出:
'stackoverflow'
['stackoverflow']
[['stackoverflow']]
[[['stackoverflow']]]
[[[[[[[[[['stackoverflow']]]]]]]]]]
当然,您会收到警告。这可以在gcc
Windows计算机(gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
)和真正的Linux计算机(gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
)上的bash上使用。