//第一个
#include<stdio.h>
void main() {
char **p,*name[3];
int i;
p = name;
for (i = 0; i < 3; i++) {
scanf("%s",p++);
printf("%s",p++);

展开全部
收起
4回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Tavis

    14人对此回答表示赞同

    第一个问题,p++表示循环输出,即输出完第第一个字符串,再输出第二个字符串,依次完成
    第二个问题,其实和第一个问题是同一个问题,即循环输出
    展开
    14
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 胡歌是我哥

    6人对此回答表示赞同

    第一个p++
    先在p指向的位置输入字符串 然后p+1 等同于从name【0】到name【1】,这个name[0]和name[1]不是元素,而是地址!而printf打印时此时p已经自增了 循环代码块内 scanf中的p和 printf中的p不一样,而且你这个程序是错的,因为你只输入一个字符串 而要打印这个字符串之后的字符串,此时p指向的内存你是不知道的,所以是乱码。
    正确的应该是 for (i = 0; i < 3; i++) {
    scanf(
    展开
    6
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 相亲相爱

    2人对此回答表示赞同

    1、scanf的第二个参数是输入的字符存入的地址。第一个字符存到p[0]中,地址就是p,第二存到p[1]中,地址是p+1,也就是p++。以此类推。
    2、p是的字符串数组指针,相当于二维数组的头,*p就是每个字符串的头,打印*p就是打印每个字符串。*p++相当于挪到下一个字符串的头。数组指针+1,就是指向下一个元素
    展开
    2
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • ajavaf

    1人对此回答表示赞同

    主要区别这两个为什么一个有*一个没有*

    首先你应该知道printf的用法,这个输出字符串的方法,你应该懂了。

    第一题中,p是指向地址的指针,而name也是地址的地址(指针name【3】的地址)。所以用scanf对p这个指针进行输入,用printf 取地址进行字符串的输出,所以这里不会出现编译类问题。只是,你想输入什么值,同时输出来而已。

    第二提中,,*name[3] = {"China","Japan&q
    展开
    1
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部