[英]Why value at operator(*) not work when the pointer is pointing to an array?
我有以下兩個代碼片段將一個數組復制到另一個數組中 C 編寫的 VS 代碼:
片段1~
int arr[5]={1,2,3,4,5};
int arr_copy[5];
int *ptr = arr;
arr(int i=0; i<5;i++)
{
arr_copy[i]=*ptr[i];
}
片段2~
int arr[5]={1,2,3,4,5};
int arr_copy[5];
int *ptr=arr;
arr(int i=0; i<5;i++)
{
arr_copy[i]=ptr[i];
}
第一個片段在編譯時拋出一個錯誤,說 *ptr[i] 無效,但第二個片段有效。 第一個不應該返回存儲在指針 ptr[i] 的值,而第二個應該返回 ptr[i] 的 integer 地址嗎? 僅僅是 C 語法的編寫方式還是背后有一些邏輯?
讓我們一步一步地通過這個go。
ptr
是指向arr
的第一個元素的指針。ptr[i]
等價於*(ptr+i)
,或者在這種情況下是arr[i]
。
*ptr[i]
將嘗試引用存儲在數組中的integer 值,即從有點隨意的 position 讀取 memory。 這幾乎總是會失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.