簡體   English   中英

我無法理解c ++中char指針操作的索引

[英]I am not able to understand indexing of char pointer operation in c++

我不明白如何在這里訪問char指針的-1位置。 當我在Turbo C中運行此代碼時,它顯示輸出'f',但是在現代編譯器中,它僅顯示空間。

#include<iostream>
using namespace std;

void main()
{
    char *str="hello";
    cout<<str[-1]<<endl;

    system("pause");
}

該行為是嚴格未定義的。

數組索引只是指針算術的語法糖,來自C ++標准草案 5.2.1

[...]表達式E1 [E2](根據定義)與*((E1)+(E2))[...]相同

數組索引在C ++中0開始,因此您所擁有的是未定義的行為,因為您正在按照5.7 加法運算符5節的規定訪問數組邊界之外的內容:

[...]如果指針操作數和結果都指向同一數組對象的元素,或者指向數組對象的最后一個元素,則求值不應產生溢出; 否則,行為是不確定的。

str[-1]嚴格等於*(str-1) ,即使從技術上來說,您得到的值也可能是str指向的地址之前內存中的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM