私は静的配列を返すようにした瞬間、効率のために動的配列を返す方法はありますか?私の関数を動的配列に戻す方法はありますか?
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int *charpos(char *str, char ch)
{
int *bff, bc, ec, i, strln;
static int ret[255];
bc = 0;
ec = 0;
for(i = 0; str[i] != '\0'; i++)
;
strln = i;
for(i = 0; i <= strln; i++)
{
if(str[i] == ch)
ec++;
}
bff = malloc(sizeof(int)*ec);
if(sizeof(bff) > sizeof(ret))
{
free(bff);
return 0;
}
for(i = 0; i <= 255; i++) ret[i] = '\0';
for(i = 0; i <= strln; i++)
{
if(str[i] == ch)
{
ret[bc] = i;
bc++;
}
}
free(bff);
return ret;
}
関数から返されるものを別にして、Cには動的配列のようなものがありますか?代わりにポインタを意味しましたか?配列はポインタではありません。 http://eli.thegreenplace.net/2009/10/21/are-pointers-and-arrays-equivalent-in-c/ –
「ダイナミックアレイ」はダイナミックメモリ割り当てを意味します。ダイナミックメモリ割り当ては、ほとんどの場合、動的(静的または自動)メモリ割り当て。だから、あなたは何の「効率」を言っていますか? – AnT
おそらくメモリ効率。 –