谁能告诉我这个是怎么运行的啊,求解答。实在是无法理解指针的原理,谁能帮我解答一下。我相信一定有人帮我解答的这个指针调用是把首地址给s吗

img


谁能告诉我这个是怎么运行的啊,求解答。实在是无法理解指针的原理,谁能帮我解答一下。我相信一定有人帮我解答的这个指针调用是把首地址给s吗

这个代码有问题,str是数组的首地址,所以在main函数中,fs(str)就可以了,用fs(&str)是错误的。
错误如下图所示:

img

img


如果我讲的还有不明白的地方的话 可以提出来 你按照这个原理带入到上面程序中就可以一步步推算出结果了 试试吧 如果你能成功推算出来的话 对指针的理解就进一步加强了哟 加油

相当于把"0123456"传递给了函数,参数s就指向字符串的首地址
函数实现将第一个字符移到最后一位,然后其它字符向前移动一位,但实际代码效果并不是最好。循环中没必要重复*(p-1) = t;将这行放到while循环结束以后就可以了

void fs(char *s)
 {
     char *p = s+1;
     char t = *s;
     while(*p)
     {
         *(p-1) = *p;
         p++;
    
     }
          *(p-1) = t;
 }
int main()
{
    char str[10] = "0123456";
    fs(str);
    printf("%s\n",str);
return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632