我不明白为什么我的代码不起作用

I am not understanding why my code is not working?

本文关键字:代码 不起作用 我的 为什么 明白      更新时间:2023-10-16

我想已经有人问过这种类型的问题了抱歉,但有人能告诉我为什么这是错误的吗。

    int a[]={10,20,30,45,50};
    int j;
    for(j=0;j<=4;j++)
    {
            cout<<(*a);
            a++;
     }

好的,如果上面代码中的指针a不能递增,那么下面的代码就可以了,这只是因为指针首先被分配给一个变量,然后它递增了吗。

  int  var[] = {10, 100, 200};
  int  i, *ptr;
  //let us have array address in pointer 
  ptr = var;
  for ( i = 0; i < MAX; i++)
  {
  printf("Value of var[%d] = %dn", i, *ptr );
  // move to the next location 
  ptr++;
  }

*a指的是a[]的第一个元素,它是10。您将在++处得到一个编译器错误。这是因为你不能增加a的值。*a是一个指向[]的第一个元素的常量指针,它的地址不能更改。。

应该是:

 int a[]={10,20,30,45,50};
 int j;
 for(j=0;j<=4;j++)
 {
     cout<<*(a+j);
 }

因为数组不是指针,所以它不编译:


int arr[] = {...}:

  • arr&arr的值必然是相同的

  • arr指向一个有效的内存地址,但不能设置为指向另一个内存地址


int* ptr = ...:

  • ptr&ptr的值不一定相同(事实上,它们大多不同)

  • ptr可以设置为同时指向有效和无效的内存地址,次数与一样多