code:该程序为了获得字符串中的单词,并对该单词进行存储,以形成字符串数组。可以采用指向指针的指针来做。
i=0;
len=0;
cnt=0;
st=0;
//输入字符串,从字符串中提取单词进行存储
char **pp=(char**)malloc(cnt*sizeof(char*));//分配存储字符串数组首地址的空间
pp[1];
char ***sp=&pp;//pp的首地址
char *p;
while(*(src+i)!='\0'){
if(*(src+i)==' ')//当遇到空格的时候进行提取
{
p=(char*)malloc((len+1)*sizeof(char));
strncpy(p,src+st,len);
*(p+len)='\0';
pp[cnt]=p;//通过malloc分配后,p实际上成了指针数组,所以为了获得首地址,直接取数组名
len=-1;
cnt++;
st=i+1;
}
i++;
len++;
if(*(src+i)=='\0')
{
p=(char*)malloc((len)*sizeof(char));
strncpy(p,src+st,len);
*(p+len)='\0';
pp[cnt]=p;
}
}
通过malloc在堆上分配空间之后,获得该空间的地址并存储在指针,实际上此时指针是指针数组,为了获得该指针数组的地址,只需要取数组名即可。