With what you have, you dont need a pointer-to-a-pointer. (all below code is tested)
Code:
void _test(RPGItem *_temp)
{
	str_cat(_temp->name,"\ntest");
}

// In function main
RPGItem testItem;
testItem.type = 2;
testItem.name = str_create(_chr(testStr));
_test(&testItem);



Unless your items are going into an array like this....
Code:
void _test(RPGItem *_temp)
{
	str_cat(_temp->name,"\ntest");
}

// In function main
RPGItem *testItem = malloc(sizeof(RPGItem)*20);		
var i; for(i=0; i<20; i++)   { memset(testItem[i],0,sizeof(RPGItem)); }
testItem[0].type = 2;
testItem[0].name = str_create(_chr(testStr));
_test(&testItem[0]);




"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial