无法初始化结构数组



我正在传递一个指向函数的指针,我想初始化被调用函数中的结构数组,并想使用该数组的主函数。但是我无法在main函数中得到它。下面是我的代码:

typedef struct _testStruct
{
    int a;
    int b;
} testStruct;
void allocate(testStruct** t)
{
    int nCount = 0;
    int i = 0;
    printf("allocate 1n");
    t = (testStruct**)malloc(10 * sizeof(testStruct));
    for(i = 0; i < 10; i++)
    {
        t[i] = (testStruct *) malloc( 10 * sizeof(testStruct));
    }
    for(nCount = 0 ; nCount < 10; nCount++)
    {
        t[nCount]->a = nCount;
        t[nCount]->b = nCount + 1;
        printf( "A === %dn", t[nCount]->a);
    }
}
int main()
{
    int nCount = 0;
    testStruct * test = NULL;
    int n = 0;
    allocate(&test);
    for(nCount = 0 ; nCount < 10; nCount++ )
    {
        if (test == NULL)
        {
            printf( "Not Allocatedn");
            exit(0);
        }
        //printf("a = %dn",test[nCount]->a);
        /*printf("a = %dn",test->a);
        printf("b = %dn",test->b); */
    }
    return 0;
}

请注意,我必须传递双指针的功能,因为它是必需的。谢谢你的帮助。

#include <stdio.h>
#include <stdlib.h>
typedef struct _testStruct 
{ 
    int a; 
    int b; 
} testStruct; 
void allocate(testStruct** t) 
{ 
    int nCount = 0; 
    printf("allocate 1n"); 
    testStruct *newT = (testStruct*)malloc(10 * sizeof(testStruct)); 
    for(nCount = 0 ; nCount < 10; nCount++) 
    { 
        newT[nCount].a = nCount; 
        newT[nCount].b = nCount + 1; 
        printf( "A === %dn", newT[nCount].a); 
    }
    *t = newT;
} 
int main() 
{ 
    int nCount = 0; 
    testStruct * test = NULL; 
    allocate(&test); 
    for(nCount = 0 ; nCount < 10; nCount++ ) 
    { 
        printf("a = %dn",test[nCount].a); 
        printf("a = %dn",test[nCount].b); 
    } 
    return 0; 
}

t = (testStruct**)malloc(10 * sizeof(testStruct));

分配给t,而不是test。也许你需要

*t = (testStruct*)malloc(10 * sizeof(testStruct));

?我不确定,周围有这么多指针,我容易迷路。无论如何,您似乎没有将任何内容分配到传递给函数的指针中。

你说你想创建一个结构数组,但是你的allocate函数创建了一个更像二维数组的数据结构。此外,您不会以任何有意义的方式将该结构返回给调用者。我想你已经对指针,malloc()和你所做的所有间接的事情感到困惑了。请查看@Ed Heal的更正版节目。

相关内容

  • 没有找到相关文章