使用雙重指標標示數個字串的位址:
char *a="test1";
char *b="test2";
char **pt=(char**)malloc(sizeof(char*)*2);//宣告array of pointer,每個pointer會用來標示一個字串位址
pt[0]=a;
pt[1]=b;
printf("%s\n%s\n",pt[0],pt[1]);
使用雙重指標存放多個字串
char **pt=(char**)malloc(sizeof(char*)*2);//array of pointer
for(i=0;i<2;i++)
{
*(pt+i)=(char*)malloc(sizeof(char)*256);
}
strcpy(*pt,"test1");
strcpy(*(pt+1),"test2");
printf("%s\n%s\n",pt[0],pt[1]);
傳入一個空的雙重指標到func內,在其內初始化並填入字串
void store_data(char ***pt)//需多加一個星號,才能控制外部**pt內含的值
{
int i=0;
printf("%x\n",pt);//double pointer's address
*pt=(char**)malloc(sizeof(char*)*2);
for(i=0;i<2;i++)
{
*(*pt+i)=(char*)malloc(sizeof(char)*256);
}
strcpy(**pt,"test1");
strcpy(*(*pt+1),"test2");
return;
}
int main()
{
int i=0;
char **pt=NULL;
printf("%x\n",&pt);//double pointer's address
store_data(&pt);
printf("%s\n%s\n",pt[0],pt[1]);
return 0;
}
沒有留言:
張貼留言