*p和p到底是什么关系?高人解释解释···
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define NMEMB 50 #define SIZE 10 int compar(const void *a,const void *b) { return(strcmp((char *)a,(char *)b)); } main() { char data[NMEMB][SIZE]={"linux","freebsd","solzris","sunos","window"}; char key[80],*base,*offset; int i,nmemb=NMEMB,size=SIZE; for(i=1;i<5;i++) { fgets(key,sizeof(key),stdin); key[strlen(key)-1]='\0'; base=data[0]; offset=(char *)lfind(key,base,&nmemb,size,compar); if(offset==NULL) { printf("%s not found!\n",key); offset=(char *)lsearch(key,base,&nmemb,size,compar); printf("ADD %s to data array\n",offset); } else { printf("found:%s\n",offset); } } }上面这个程序是在gcc下线性查找的例子;offset=(char *)lfind(key,base,&nmemb,size,compar);//lfind的返回值是一个指针
为什么printf("found:%s\n",offset); 用offset,而不用*offset,是不是和上面的强制转换有关系?
谁能解释下??谢谢!!!