如何将生成的数组从c函数返回到objective-c
需要在c函数中生成一些随机的10字节长字符串,并从objective-c调用该函数。所以,我创建了一个指向uint8_t的指针,并将其传递给C函数。该函数生成随机字节并将其分配给*randomString。然而,从函数返回到objective-c randomValue后,指针指向NULL 这是我在C中的随机函数:如何将生成的数组从c函数返回到objective-c,objective-c,c,Objective C,C,需要在c函数中生成一些随机的10字节长字符串,并从objective-c调用该函数。所以,我创建了一个指向uint8_t的指针,并将其传递给C函数。该函数生成随机字节并将其分配给*randomString。然而,从函数返回到objective-c randomValue后,指针指向NULL 这是我在C中的随机函数: void randomString(uint8_t *randomString) { randomString = malloc(10); char randomByte;
void randomString(uint8_t *randomString)
{
randomString = malloc(10);
char randomByte;
char i;
for (i = 0; i < 10; i++) {
srand((unsigned)time(NULL));
randomByte = (rand() % 255 ) + 1;
*randomString = randomByte;
randomString++;
}
}
指针按值传递,因此调用
randomString
后,randomValue
将保持NULL
。您需要将指针传递给指针才能使其工作:
void randomString(uint8_t **randomString) {
*randomString = malloc(10);
// ... the rest of your code goes here, with an extra level of indirection
}
uint8_t *randomValue = NULL;
randomString(&randomValue);
一个更自然的语义,比如
malloc()
本身就是:
uint8_t * randomString()
{
uint8_t *randomString = malloc(10);
srand((unsigned)time(NULL));
for (unsigned i = 0; i < 10; i++)
randomString[i] = (rand() % 254) + 1;
return randomString;
}
uint8_t*randomString()
{
uint8_t*randomString=malloc(10);
srand((无符号)时间(NULL));
for(无符号i=0;i<10;i++)
随机字符串[i]=(rand()%254)+1;
返回随机字符串;
}
您可能应该使用uint8\u t**randomeValue
而不是uint8\u t*
我当时的想法!:)这也能更好地工作和阅读uint8_t*randomValue=randomString()代码>
uint8_t * randomString()
{
uint8_t *randomString = malloc(10);
srand((unsigned)time(NULL));
for (unsigned i = 0; i < 10; i++)
randomString[i] = (rand() % 254) + 1;
return randomString;
}