2018年2月2日 星期五

C 雙重指標筆記

使用雙重指標標示數個字串的位址:
 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;
}

沒有留言:

張貼留言