Chủ đề: Pointer
-
22-06-2014, 08:03 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình hiểu rồi. Cám ơn hai bạn nhiều nhé [IMG]images/smilies/biggrin.png[/IMG]
View more random threads:
- A/c giỏi c++ giúp giùm e mấy bài này với.
- Hỏi về so sánh các chuỗi con có trọng số
- hoa tươi giá rẻ tại vĩnh long ,địa chỉ shop hoa toàn quốc
- Khái niệm cơ bản về Object C
- Hỏi nhập và tìm sắp xếp dãy số của cây nhị phân?
- Phong cách kiến trúc xanh là phong cách được ưu chuộng hiện nay
- không dùng được "else if" trong visual studio 2013?
- Dùng break trong while không được
- Tài liệu hướng dẫn xây dựng ứng dụng iPhone - iOS
- Hỏi về Modifier trong lập trình C
-
22-06-2014, 03:35 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Pointer
Mình mới gặp đoạn code này.
Mã:#include<stdio.h> #include<conio.h> main() { int *q,a[10]={5,4,6,4,3,9,7,8,1,0}; char *p; p=(char*)a; p++; q=(int*)p; printf(" %d",*q); }
-
22-06-2014, 04:07 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cái này là misaligned memory access rồi.
Nếu là int 16bit:
- Big-endian: Kết quả là 4
- Little-endian: Kết quả là 4*2^8=1024.
-
22-06-2014, 05:59 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Trường hợp của bạn là Little endian (http://en.wikipedia.org/wiki/File:Big-little_endian.png) và int 16 bit
Xét a[0] và a[1]:
Mã:a[0] = 5: (first byte) 0000 0101 (second byte) 0000 0000 a[1] = 4: (first byte) 0000 0100 (second byte) 0000 0000 p = a: (first byte) 0000 0101 p++ : (first byte) 0000 0000 q = p: (first byte) 0000 0000 (second byte) 0000 0100 ( lấy từ first byte của a[1])
Vậy q = 1024.
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...