我理解為什么 stl 索引是無符號的,因為你永遠不會有負索引。但是對于普通的 C 陣列,索引是有符號的。為什么是這樣?
如果有充分的理由對 C 陣列索引進行簽名,為什么他們決定使 stl 索引不同?
uj5u.com熱心網友回復:
C 中的陣列索引實際上只是一個指標偏移量。 x[y]與 完全相同*(x y)。這使您可以執行以下操作:
int a[3] = { 1, 2, 3 };
int *p = a; /* p points to a[0] */
printf("p[1]=%d\n", p[1]); /* prints 2 */
p = 2; /* p points to a[2] */
printf("p[-1]=%d\n", p[-1]); /* prints 2 */
這就是允許負陣列索引的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523668.html
標籤:C C索引stl
上一篇:列印char*的完整大小
下一篇:C:如何將二維陣列賦予函式
