当我在一个网站上做指针的时候,我会坚持某一点。
当我写下给定的例子时,我可以为一个递增的指针分配数组地址一个指针例子,比如ptr = arr;,它可以正常工作,但是当我对递减的例子做同样的事情时,它不能工作,只有当我这样写的时候它才能工作。为什么我要写和号来表示减量的例子?这两者有什么区别?

int main()
{
    int arr[3]={10,20,30};
    int *ptr,i;

    ptr=arr;

    for(i=0;i<3;i++)
    {
        printf("adress of variable arr[%d] %x\n",i+1,ptr);
        printf("value of arr[%d] = %d\n",i+1,*ptr);
        ptr++;
    }
    return 0;
}

最佳答案

不同的是在“减量”的情况下使用[]。将arr视为对整个数组的引用,因此可以(从编译器的角度)使用相同的结果执行ptr=arrptr=&arr。另一方面arr[3]是对数组中对象的引用,因此需要显式地获取其地址(不需要对编译器进行优化)。

关于c++ - 指针增量减量语法差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27626927/

10-12 04:24