01/10/2018, 10:49
Hỏi về long, char C++
long a[10];
void *ptr1=&a[7],ptr2=&a[1];
long d1=(long*)ptr1-(long*)ptr2;
long d2=(char*)ptr1-(char*)ptr2;
long d3=(short*)ptr2-(short*)ptr1;
Thì khi in ra được là d1=6,d2=24,d3=-12.
Các bạn giải thích dùm cái?
Cảm ơn ^^
Bài liên quan
=>
*
ptr2Khi khai báo
wandbox.org
long a[10];
máy sẽ tạo 10 địa chỉ(được biểu diễn dưới dạngint
), và tùy vào x86 hay x64, cấu hình khác nhau, các phần tử sẽ có vị khác nhau, tuy nhiên nó sẽ liên tục.Việc trừ kia thực chất là trừ vị trí của các phần tử trong mảng => trả về giá trị này khác nhau đối với các kiến trúc máy khác nhau.
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
#include int main() { long a[10]; void *ptr1=&a[7],*ptr2=&a[1]; long d1=(long*)ptr1-(long*)ptr2; long d2=(char*)ptr1-(char*)ptr2; long d3=(short*)ptr2-(short*)ptr1; std::cout << d1 << d2 <