有人可以帮助我如何在主要功能上传递2D数组吗?我在网上搜索了很多如何返回数组,但指针并没有帮助我。
(Get-AzureRmVm -ResourceGroupName [name of RG]).StorageProfile.OsDisk.Vhd.Uri
答案 0 :(得分:2)
你有两个问题:拳头是你告诉编译器函数应该返回一个字符,但然后返回一个数组数组。
第二个问题是你试图返回一个局部变量,一个变量会在函数返回后立即消失。
第一个问题的解决方案取决于您为第二个问题选择的解决方案。第二个问题的解决方案是确保返回的变量不会因为static
而消失,或者使用动态内存分配为它创建内存。
如果你要创建数组static
,你必须记住数组衰变到指向它们的第一个元素的指针,所以一旦P
已经衰变,你就会得到char (*)[16]
类型的东西。 1}}。
如果使用动态内存分配,它取决于你声明P
的内容,但最常见的是使用指向指针的指针,即char **
,这就是你应该使用的作为返回类型。
答案 1 :(得分:0)
你必须分配内存。这是一个解决方案。
#include <stdio.h>
#include <stdlib.h>
char** fillcards(void){
int i,j,r=1001,c=16;
srand(8490);
char **P = (char **)malloc(r * sizeof(char *));
for (i=0; i<r; i++)
P[i] = (char *)malloc(c * sizeof(char));
for(i=0;i<1000;i++)
{
for(j=0;j<15;j++){
char randomletter="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand() % 36];
P[i][j]=randomletter;
}
}
return P;
}
int main(int argc, char *argv[])
{
char **A=fillcards();
printf("%s\n", A[999]); // Just to test
system("PAUSE");
return 0;
}