如何将生成的数组从c函数返回到objective-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;

需要在c函数中生成一些随机的10字节长字符串,并从objective-c调用该函数。所以,我创建了一个指向uint8_t的指针,并将其传递给C函数。该函数生成随机字节并将其分配给*randomString。然而,从函数返回到objective-c randomValue后,指针指向NULL

这是我在C中的随机函数:

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;
}