我不明白为什么我的代码不工作?
我认为这种类型的问题已经被问到对不起,但任何人都可以告诉我为什么这是错的。我不明白为什么我的代码不工作?
int a[]={10,20,30,45,50};
int j;
for(j=0;j<=4;j++)
{
cout<<(*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] = %d\n", i, *ptr);
// move to the next location
ptr++;
}
* a指的是[]的第一个元素,它是10.您将在++中得到编译器错误。这是因为你不能增加a的值。 * a是常数指针指向的第一个元件的[],并将其地址不能被改变..
它应该是:
int a[]={10,20,30,45,50};
int j;
for(j=0;j<=4;j++)
{
cout<<*(a+j);
}
但为什么一个错误只是递增和解引用它呢? – CodeHacker 2014-09-06 06:58:52
a是一个常数指针...它的地址无法更改.. – lakesh 2014-09-06 07:08:56
如果我的回答很有用,请将它标记为正确.. – lakesh 2014-09-06 18:49:11
它不编译,因为阵列不是指针:
随着int arr[] = {...}
:
的
arr
和&arr
的值不必相同arr
指向一个有效的存储器地址,但不能被设置为指向另一存储器地址
随着int* ptr = ...
:
ptr
和的值不必相同(事实上,他们大多是不同的)ptr
可以设置为指向有效和无效的内存地址,如多次,你会
你发现了什么问题。 ..? – 2014-09-06 06:45:53
错误是“左值需要作为增量操作数”? – CodeHacker 2014-09-06 06:51:45
你想要做什么..? – 2014-09-06 06:53:17