我試圖寫一個簡單的代碼作爲sizeof(特別是在此代碼中的int)。但爲什麼它顯示1作爲輸出?它應該是4.sizeof的代碼?
#include<stdio.h>
int SIZEOF(int *);
int main(void)
{
int a;
printf("Size is:%d bytes\n",SIZEOF(&a));
return 0;
}
int SIZEOF(int *p1)
{
int *p2;
p2=p1;
p1++;
return (p1-p2);
}
出於同樣的原因,'p1 ++'增加'sizeof(int)','p1-p2'是'sizeof(int)'的單位差。首先強制轉換爲char *',其大小通常爲1. – GManNickG
'+ 1'指針指向它自己類型的下一個位置。 (這不是遞增地址值,而是邏輯遞增,這對於編程非常有用)指針運算與值運算不同 –