【发布时间】:2011-06-06 18:44:06
【问题描述】:
可能重复:
2D arrays and pointers.
(这不是那个问题的重复。在那个问题中,OP 正确地传递了一个指向 a-指针,问题在于取消引用未初始化的指针。这个问题是关于尝试将指向数组的指针传递给需要指向指针的函数的函数。)
为了与某些现有代码兼容,我需要将二维数组作为指针指针传递给函数。我已经简化了下面的代码。在它打印结构中的第一个值和函数printvalues 中的newptr 后,即“我的值是123,在结构123 中”,我得到一个段。过错。我错过了什么?
#include <stdio.h>
#include <stdlib.h>
typedef struct mystruct
{
char mychar [4][5];
} mystruct_t;
void printvalues( char** newptr )
{
int i;
mystruct_t * fd = (mystruct_t*)malloc(sizeof(*fd));
for ( i = 0; i < 3; i++ )
{
strcpy(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 *ptr = malloc(4*sizeof(char));
char **pptr = (char **) malloc(5*sizeof(char *));
char abc[4][5] = { "123", "456", "789" };
for ( i = 0; i < 3; i++ )
{
printf( "My value is %s\n", abc[i] );
}
ptr = abc;
printvalues(&ptr );
}
【问题讨论】:
-
@lostinpointers:请不要简单地转发同样的问题。如果您认为这是一个不同的问题,您应该 (1) 确认之前的问题,(2) 说明您从那时起所做的工作,以及 (3) 具体说明这个问题是新问题。
-
行:
ptr = abc;(从下到上第三个)给我一个错误:warning: assignment from incompatible pointer type。 -
值得指出的是,虽然您可以使用
foo[][]访问存储在char**中的数据,但它的语法与char[][]不同 . -
没注意到重复,打算删除我的答案。
-
这实际上根本不是那个问题的重复!
标签: c pointers multidimensional-array