假設我們有
int x = 4;
int *ptr = &x;
我希望ptr[0]會是ptr,ptr[1]會是ptr 1,等等。然而,完全不同的事情發生了。我跑了
#include <stdio.h>
int main()
{
int x = 4;
int* ptr;
ptr = &x;
//ptr vs ptr[0]
printf("ptr: %p\n\n", ptr);
printf("ptr[0]: %p\n\n", ptr[0]);
//ptr 1 vs ptr[1]
printf("ptr 1: %p\n\n", ptr 1);
printf("ptr[1]: %p\n\n", ptr[1]);
//ptr 5 vs ptr[5]
printf("ptr 5: %p\n\n", ptr 5);
printf("ptr[5]: %p\n\n", ptr[5]);
}
結果是
ptr: 0115FBF4
ptr[0]: 00000004
ptr 1: 0115FBF8
ptr[1]: CCCCCCCC
ptr 5: 0115FC08
ptr[5]: 00000001
uj5u.com熱心網友回復:
ptr[0]is *(ptr 0)、ptr[1]is*(ptr 1)等。索引計算偏移量和取消參考。您應該收到關于%p用于列印不是指標的內容的警告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/356249.html
上一篇:C 中的指標和地址
