qq1242009750 发表于 2016-7-22 15:39:10

不是很明白这里的东西

int main()
{
    int array = {0,1,2,3,4,5,6,7,8,9};
                        int *p = (int*)(&array + 1);

    printf("%d\n",*(p - 6));
    return 0;
}


array 表示第一个元素的地址,所以+1的话就等于 array + 1 = array他是一个变量还是常量啊??

&array 表示整个字符串的地址 所以+1的话 就等于array += attay吗?他是一个变量还收常量啊??

小甲鱼 发表于 2016-7-22 15:44:24

*(array + 1) == array,*(array + 1) == &array

是常量还是变量,我想你可以通过自己的实验来证实(自己动手比别人直接告诉你答案要深刻很多哦~)

vcvycy 发表于 2016-7-22 16:18:44


int main()
{
    int array = {0,1,2,3,4,5,6,7,8,9};
                        int *p = (int*)(&array + 1);

    printf("%d\n",*(p - 6));
    return 0;
}


array和&array都表示数组首地址,即array=&array。
二者都是常量。
用在表达式中常量变量没影响,比如int p=2和int* p=array,2和array都是常量。二者性质一样。

qq1242009750 发表于 2016-7-23 20:59:22

本帖最后由 qq1242009750 于 2016-7-23 21:11 编辑

小甲鱼 发表于 2016-7-22 15:44
*(array + 1) == array,*(array + 1) == &array

是常量还是变量,我想你可以通过自己的实验来证 ...
页: [1]
查看完整版本: 不是很明白这里的东西