C 使用指针变量指定数组元素值时,第三个数组元素不会打印出来

C 使用指针变量指定数组元素值时,第三个数组元素不会打印出来,c,arrays,pointers,C,Arrays,Pointers,所以我在读一本关于C的书时,遇到了一段我不能完全理解的代码,所以我决定运行它,亲自看看结果。基本上,我理解数组变量的作用类似于指针,例如,它指向数组的第一个元素 char quote[]="This is a nice cookie!" 这里的quote是一个数组变量,基本上是指向数组第一个元素的指针,即字母T(希望到目前为止我是正确的) 在此基础上,当我编写下面的代码时,我理解以下几点 在申报时,参赛者是一个包含3名成员的阵列-1、2和3 然后我使用*choice作为数组变量,换句话说,它是

所以我在读一本关于C的书时,遇到了一段我不能完全理解的代码,所以我决定运行它,亲自看看结果。基本上,我理解数组变量的作用类似于指针,例如,它指向数组的第一个元素

char quote[]="This is a nice cookie!"
这里的quote是一个数组变量,基本上是指向数组第一个元素的指针,即字母T(希望到目前为止我是正确的)

在此基础上,当我编写下面的代码时,我理解以下几点

  • 在申报时,参赛者是一个包含3名成员的阵列-1、2和3
  • 然后我使用*choice作为数组变量,换句话说,它是指向数组竞争者的第一个元素的指针,现在是(1)
  • 现在,我开始动态地为参赛者数组的成员赋值

    竞赛题[2]=*选项

  • 将值0放入数组的第三个成员,即:
    参赛者[2]

    到目前为止,一切顺利。 现在,书中没有下一个for循环。我自己将其包含在代码中,以查看数组的元素。当我运行代码时,作为输出,我得到-

    I will pick contestant number 2
    The members of the array contestants are:
    Member 0 has the value 2
    Member 1 has the value 3
    
    我的问题是-我不明白成员1如何具有值3。根据代码,成员1和2不应该都具有相同的值(2)

    任何帮助都将不胜感激。 我正在使用Sublime文本和Mac终端来运行它(如果需要)

    #包括
    int main()
    {
    int contenstants[]={1,2,3};
    int*choice=contenstants;
    抗辩人[0]=2;
    抗辩人[1]=抗辩人[2];
    抗辩者[2]=*选择;
    printf(“\n我将选择参赛者编号%I\n”,contenstants[2]);
    //打印数组成员
    printf(“数组上下文的成员是:\n”);
    
    对于(int i=0;i它是
    3
    ,因为您正在

    contenstants[1]=contenstants[2];
    
    然后,
    contenstants[1]
    以后不会修改,因此它具有值
    3

    在评论中回答您的问题:

    for循环中的条件不正确

    --------------v not correct
    for(int i=0;i<contenstants[2];i++)
    
    ------------v不正确
    
    对于(int i=0;i它是
    3
    ,因为您正在

    contenstants[1]=contenstants[2];
    
    然后,
    contenstants[1]
    以后不会修改,因此它具有值
    3

    在评论中回答您的问题:

    for循环中的条件不正确

    --------------v not correct
    for(int i=0;i<contenstants[2];i++)
    
    ------------v不正确
    对于(int i=0;i
    您得到的输出完全符合逻辑!
    在第一步中,将值2赋给
    上下文[0]
    ,这也是
    *选项

    在输出中只得到两个数字的原因是,您循环了(inti=0;i)的
    
    您得到的输出完全符合逻辑!
    在第一步中,将值2赋给
    上下文[0]
    ,这也是
    *选项


    您在输出上只得到两个数字的原因是,您循环
    (int i=0;iOkay,谢谢!但是为什么for循环只打印2个成员-0和1。那么成员3呢?不应该也打印值2吗?对不起-我的错误。for循环应该有一个@DarkKnight我更新了答案,但是你是对的,或者使用
    好的,谢谢!但是为什么for循环只打印2个成员-0和1。什么about成员3?难道不应该用值2打印吗?很抱歉-我的错误。for循环应该有一个@DarkKnight我更新了答案,但是你是对的,或者使用
    我明白了,但是为什么for循环不打印我的所有数组成员?只打印带有值的成员1和2?非常感谢!我很抱歉-我的错误。fo我明白了,r循环应该有一个,但是为什么for循环不打印出我所有的数组成员呢?只打印带有值的成员1和2?非常感谢!对不起,我错了。for循环应该有一个
    
    int contenstants[]={1,2,3};
    int *choice=contenstants;        // choice -> {1,2,3}
    contenstants[0]= 2;              // choice -> {2,2,3}
    contenstants[1]=contenstants[2]; // choice -> {2,3,3}
    contenstants[2]=*choice;         // choice -> {2,3,2}