我试图抓住这三个声明之间的区别:我试图做一些测试,以找出这
char p[5];
char *p[5];
char (*p)[5];
,因为读的声明之类的东西的每一个指南并没有帮助我到目前为止。我写了这个小程序,它不工作(我试过其他种类使用第三申报的,我已经跑出去的选项):
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
char p1[5];
char *p2[5];
char (*p3)[5];
strcpy(p1, "dead");
p2[0] = (char *) malloc(5 * sizeof(char));
strcpy(p2[0], "beef");
p3[0] = (char *) malloc(5 * sizeof(char));
strcpy(p3[0], "char");
printf("p1 = %s\np2[0] = %s\np3[0] = %s\n", p1, p2[0], p3[0]);
return 0;
}
第一和第二的作品好吧,我也了解他们的工作。第三个声明的含义和使用它的正确方法是什么?
谢谢!
解码声明是我和C++最不喜欢的部分。 –