如何初始化函式內的字符指標陣列。應該注意的是,長度動態地來自函式內部的其他計算。我在里面找不到長度main()。為簡單起見,我已經rand()解釋了場景。
有什么方法可以初始化具有一定長度的字符指標陣列而不將長度從main()to傳遞setArgs()?
使用下面的代碼我得到錯誤:
temp.c:8:6: 錯誤:無效使用未指定邊界的陣列 8 | 引數[長度];
#include<stdio.h>
#include<stdlib.h>
void setArgs(char* (*args)[])
{
int length = (rand() % 5) 2;
args[length];
args[0]="hello\0";
args[1]="jack\0";
}
int main()
{
char* myArgs[]={NULL};
setArgs(&myArgs);
for(int i=0;i<2;i )
{
printf("%s", myArgs[i]);
}
return 0;
}
uj5u.com熱心網友回復:
這是一種方法:
#include<stdio.h>
#include<stdlib.h>
char **setArgs()
{
int length = (rand() % 5) 2;
char **args;
args = malloc(length*(sizeof(char*)));
args[0]="hello\0";
args[1]="jack\0";
return args;
}
int main()
{
char** myArgs;
myArgs = setArgs();
for(int i=0;i<2;i )
{
printf("%s", myArgs[i]);
}
return 0;
}
uj5u.com熱心網友回復:
你有兩個選擇。動態分配記憶體或先生成長度:
1.
#include<stdio.h>
#include<stdlib.h>
void setArgs(char *** args)
{
int length = (rand() % 5) 2;
*args = malloc(sizeof(char *)*length);
(*args)[0]="hello\0";
(*args)[1]="jack\0";
}
int main()
{
char ** myArgs = NULL;
setArgs(&myArgs);
for(int i=0;i<2;i )
{
printf("%s", myArgs[i]);
}
free(myArgs);
return 0;
}
或 2。
#include<stdio.h>
#include<stdlib.h>
void setArgs(char ** args)
{
args[0]="hello\0";
args[1]="jack\0";
}
int main()
{
int length = (rand() % 5) 2;
char* myArgs[length];
setArgs(myArgs);
for(int i=0;i<2;i )
{
printf("%s", myArgs[i]);
}
return 0;
}
args[length];不改變長度,只是在索引處進行陣列訪問length
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456704.html
上一篇:如何在指標陣列中分配指標值
