c - 使用指针变量分配数组元素值时,第三个数组元素不会打印出来

标签 c arrays pointers

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

char quote[]="This is a nice cookie!"

这里的 quote 是一个数组变量,基本上是一个指向数组第一个元素的指针,即字母 T(希望到目前为止我是正确的)。

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

  1. 在声明时,参赛者是一个包含 3 个成员的数组 - 1、2 和 3
  2. 然后我使用 *choice 作为数组变量,换句话说,它是指向数组参赛者的第一个元素的指针 - 现在是 (1)。
  3. 现在我开始为参赛者数组的成员动态分配值。

    参赛者[2]=*选择

将值 0 放入数组的第三个成员中,即:contestants[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 Text 和 Mac 终端来运行它(如果需要)。

#include<stdio.h>
int main()
{
    int contenstants[]={1,2,3};
    int *choice=contenstants;
    contenstants[0]= 2;
    contenstants[1]=contenstants[2];
    contenstants[2]=*choice;
    printf("\n I will pick contestant number %i\n", contenstants[2] );

    //Print array members

    printf(" The members of the array Contenstants are:\n");

    for(int i=0;i<contenstants[2];i++)
    {
        printf(" Member %i\t  has the value %i\t", i, contenstants[i] );
        printf("\n");
    }
    return 0;
}

最佳答案

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}

你得到的输出是完全符合逻辑的! 在第一步中,将值 2 分配给 contenstants[0] ,这也是*choice .

输出中只得到两个数字的原因是循环 for(int i=0;i<contenstants[2];i++) ,相当于for(int i=0;i<2;i++) ,它循环遍历元素号 0 和元素号 1。

关于c - 使用指针变量分配数组元素值时,第三个数组元素不会打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24014353/

相关文章:

c++ - 错误 : request for member (maybe you meant to use '->' ? ) 已经使用 '->'

c - 我的 switch 语句遇到问题...它有任何限制吗?

c - 可靠地计算磁盘已满时 fwrite 写入的字节数

arrays - 如何从JSON传递List <dynamic>到List <MyModel>?

javascript - 映射 react 中的所有非空对象

c - 指针 C 中的左值、右值

连接两个字符串并丢弃重叠

C 宏获取 typeof 参数

javascript - 映射数组时考虑空值 ES6

c - 难以理解c中的一行代码