-2
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[]={10,20,30,40,50,60,70};
int *i,*j,*k;
k=2686703;
i=&arr[1];
j=&arr[5];
printf("%d\n%d\n",i,j) ;
printf("%d\n",j-i);
printf("%d",*(k));
return 0;
}
2686700
2686716
garbage value
爲什麼是j和i = 4,而不是16之間的差異?如果爲數組中的每個整數保留4個字節,爲什麼它們的垃圾值會對這個中間地址產生影響?
請澄清你的問題和你的樣品。例如,printf(「%d \ n%d \ n」,j-i)是錯誤的,因爲您只能顯示一個變量。我知道你正在試圖理解數組的指針是如何工作的,但問題和示例不清楚(並且示例包含「絕對」值k = 2686703,不能用於別處 – tomsoft 2014-10-02 17:32:04
如何分配'k = 2686703 ;'?這裏k是指針 – Rustam 2014-10-02 17:33:25
格式字符串中的整數類型也是錯誤的,指針減法結果爲ptrdiff_t值,可以打印爲%td(假設C99/C11,C89需要強制轉換) – doynax 2014-10-02 17:38:29