Желая усечь адреса для наглядности.
Не ищите улучшенный код,
просто почему вычитание шестнадцатеричного кода не работает должным образом.
Первый результат с вычитанием «нуля» из «cname» и «arptr»:
address of 'cname' is 0x7fff5fbff720
and of 'arptr' is 0x7fff5fbff720
Желание обрезать ненужные цифры для ясности
Я вычитаю 0x7fff5fbf0000, думая, что получу
0x00000000f720, но:
Второй результат с вычитанием 'trunker' из 'cname' и 'arptr':
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;
}
Использование Xcode в OS X
Спасибо и с Новым 2012 годом