2D数组和指针

嘿所有,我是一个指针新手,在下面的代码中,我试图将二维数组的值存储在一个结构中,然后打印它们。 但是,我在行中得到一个编译错误:f d->mychar[i] = newptr[i]; 我得到的结果虽然char * strstr[]相同,但char ** strstr[][] ,但我找不到解决方案来完成以下工作。

 typedef struct mystruct{ char mychar [20][20]; }mystruct_t; void printvalues ( char ** newptr){ int i; mystruct_t * fd; for (i=0;imychar[i] = newptr[i]; printf("My value is %s and in struct %s\n", newptr[i], fd->mychar[i]); } } int main (int argc, char **argv){ int i; char * abc[5] = {"123", "456", "789"}; for (i=0;i<3;i++){ printf("My value is %s\n", abc[i]); } printvalues(abc); } 

大多数问题是您使用未分配的结构。 你使用指向mystruct_t的指针,但从未分配过它。 以下是我的运行:

 #include  typedef struct mystruct { char* mychar [20]; } mystruct_t; void printvalues( char** newptr ) { int i; // note: you used an unallocated pointer in your original code mystruct_t fd; for ( i = 0; i < 3; i++ ) { fd.mychar[i] = newptr[i]; printf( "My value is %s and in struct %s\n", newptr[i], fd.mychar[i] ); } } int main( int argc, char **argv ) { int i; char * abc[5] = { "123", "456", "789" }; for ( i = 0; i < 3; i++ ) { printf( "My value is %s\n", abc[i] ); } printvalues( abc ); }