不是很明白这里的东西
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吗?他是一个变量还收常量啊?? *(array + 1) == array,*(array + 1) == &array
是常量还是变量,我想你可以通过自己的实验来证实(自己动手比别人直接告诉你答案要深刻很多哦~)
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 21:11 编辑
小甲鱼 发表于 2016-7-22 15:44
*(array + 1) == array,*(array + 1) == &array
是常量还是变量,我想你可以通过自己的实验来证 ...
页:
[1]