首页 > 解决方案 > 将数组作为参数传递并分配内存

问题描述

请有人帮我解决这个问题..

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct{
    int id;
    char nama[50];
} test_t;

void test(int* count, test_t* t){
    (*count) = 5;
    t = (test_t*)malloc(sizeof(*t)*5);
    for(int i=0;i<5;i++){
        t[i].id = i;
        strcpy(t[i].nama, "test");
        printf("id: %i\nnama: %s\n", t[i].id, t[i].nama);
    }


 printf("t size: %lu\n", sizeof(t));
}

int main(int argc, char** argv){
    int a = 1;
    test_t* item;
    test(&a, item);
    for(int i=0;i<a;i++){
        printf("id: %i\nnama: %s\n", item[i].id, item[i].nama);
    }
    return 0;
}

我尝试将指针传递给一个结构,然后从中创建数组,然后将数组返回给调用函数..但我无法从中得到结果..任何帮助将不胜感激..谢谢...

顺便说一句..这是输出结果

id: 0
nama: test
id: 1
nama: test
id: 2
nama: test
id: 3
nama: test
id: 4
nama: test
t size: 8
id: 1
nama: 
id: -767851619
nama: �
id: -767851396
nama: �
id: -767849773
nama: �
id: -767849398
nama: �

标签: cpointersmalloc

解决方案


推荐阅读