c语言编程问题,如图所示

c语言编程问题,如图所示如图,哪位大神详细的给解释一下,看不懂啊

主函数里第二句中的char修改为*pArray即可。
作详细说明前,请允许我多说一些对于指针的理解,因为不确定po主是否了解指针,所以我把我的理解给你说一下,希望能起到一些帮助。
指针和一般变量都可以当做一个盒子,每个盒子都有自己该处的位置(地址),不同之处在于一般变量的盒子里存放着具体的数值或字符(其实字符也相当于数值),而指针的盒子里存放着别的盒子的位置(地址)。
说明如下(以下的pArray统一用p简称):
*p[]是一个存放指针的数组,该数组每个元素都是一个指针,也就是说每个元素存放的都是一个地址,而非具体数值。
所以我们可以知道,p是代表这个数组本身的首地址,也就是这些连续着的指针的首地址;而*p是代表数组内指针指向的首地址,也就是这批“盒子”里放的东西(那些字符串的地址);*(*p)是代表那些字符串。
显而易见,若我们想知道这批“盒子”的数量,那就是用总盒子的长度,除以每个盒子的长度,就可以得到结果,即sizeof(p)/sizeof(*p)。(如果没记错的话,同一个数组内每行所分配的内存长度都是一致的)
望采纳,谢谢。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-31
void Print(char *arr[],int len);//调用前声明要调用的函数
int main(int argc,char *argv[]){
    char *pArray[]={"How","are","you"};//创建3个常字符串并将其首地址依次赋给指针数组pArray
    //int num = sizeof(pArray)/sizeof(char);//计算为pArray分配的内存字节数,但有错
    int num = sizeof(pArray)/sizeof(char *);//应该是sizeof(char *)才对
    printf("Total string numbers = %d\n",num);//显示计算出来的pArray所点字节数
    Print(pArray,num);//调用自定义函数Print
    return 0;
}
void Print(char *arr[],int len){//自定义函数Print
    int i;
    for(i=0;i<len;i++)//用这个循环依次输出arr所指所有字符串
        printf("%s ",arr[i]);//调用库函数printf输出主调函数传来的指针所指字符串
    printf("\n");
}

本回答被网友采纳
相似回答