C++ 指針偏移的理解


//題目:若有程序段int a[5] = { 1, 2, 3, 4, 5 }; int *p = (int *)(&a + 1); printf("%d,%d", *(a + 1), *(p - 1)); 則輸出的結果是(),()


#define
_CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *p = (int *)(&a + 1); //&a+1的意思為 a數組地址向右偏移一個a類型的數組地址大小, (int*)(&a+1)則表示解引用, //取此地址存放的值,這里的值為空 printf("%d,%d", *(a + 1), *(p - 1)); //*(a+1) a+1取a的第一個元素的偏移一個int地址,則為a[1]的地址 *(a+1)為解引用,取這里地址存放的值則為2 //*(p-1) 則這里的值為a[4]的值,所以為5 return 0; }

最后輸出的結果為2,5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM