作者blacksway ()
看板C_and_CPP
標題[問題] 位址的疑問
時間Sat Jan 9 11:59:56 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: 不了解位址算出來的結果是如何算的
希望得到的正確結果:解釋讓我懂
程式跑出來的錯誤結果:沒錯
開發平台: Dev-C++
有問題的code:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
struct employee
{
char id[7];
char name[20];
int salary;
};
struct employee manager = {"D12345","Peter",3500};
printf("&manager=%x\n",&manager);
//位址為22ff50
printf("&manager.id=%x\n",&manager.id);
//位址為22ff50
printf("&manager.name=%x\n",&manager.name);
//位址為22ff57
printf("&manager.salary=%x\n\n",&manager.salary);
//位址為22ff6c
<-----這是怎麼算出來的?
printf("manager.id=%s\n",manager.id);
printf("manager.name=%s\n",manager.name);
printf("manager.salary=%d\n\n",manager.salary);
printf("&manager+1=%x\n",&manager+1);
//位址為22ff70
<-----這又是怎麼算出來的?
system("PAUSE");
return EXIT_SUCCESS;
}
補充說明:抱歉,初學者不懂指標的運作
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.19.219
→ johnhmj:啊~我的眼睛~>_<||| 01/09 12:03
推 stockton19:我印象中struct的mem不一定會"緊密" emun才會 @@? 01/09 12:12
→ johnhmj:在於資料成員的資料型態不一致~ 01/09 12:15
→ blacksway:1F眼睛@@? 01/09 12:39
推 hilorrk:alignment 01/09 12:55
→ fancyrex:同上,16byte alignment 01/09 21:48