明確にするためにアドレスを切り捨てたい。改善されたコードを探しているのではなく、16 進コードの減算が正しく機能していないように見える理由です。
「cname」と「arptr」から「ゼロ」を引いた最初の結果:
address of 'cname' is 0x7fff5fbff720
and of 'arptr' is 0x7fff5fbff720
わかりやすくするために不要な数字を切り捨てたいので、0x00000000f720 になると思って 0x7fff5fbf0000 を引きますが、
「cname」と「arptr」から「trunker」を差し引いた 2 番目の結果:
address of 'cname' is 0xffff00014082f720
and of 'arptr' is 0xffff00014082f720
#include <stdio.h>
#define trunker 0x7fff5fbf0000
#define zero 0x000000000000
int main(void) {
char cname[3][3] = {'a','b','c','e','f','g','i','j','k'};
char (* arptr)[3];
arptr = cname;
printf("address of cname is %p\nand of arptr is %p\n",
cname-zero,arptr-zero); //replace zero with trunker
//to truncate first 8 digits
return 0;
}
OS X で Xcode を使用する
2012 年明けましておめでとうございます。