01/10/2018, 12:15
Ý nghĩa pp[2].x
em có đoạn code sau
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 2, b = 3;
struct point {
int x;
int y;
} *pp, parr[ ] = { {12, 3}, {10, 7}, {8, 11}, {6, 15}, {4, 19} }; /* Note: tableau de 5 éléments
*/
pp = &parr[2];
printf("%d .... %d
",pp->x,pp->y);
a = pp[2].x;
printf("%d
",a);
}
Mình không hiểu pp[2].x là giá ttrị gì vậy
Bài liên quan
đây là kiểu struct, khi bạn khai báo như vậy tức là parr là một mảng gồm 5 phần tử kiểu point, mỗi phần tử có 2 thành phần x và y.
thường thì không nên khai báo như vậy sẽ dễ dẫn đến hiểu nhầm. bạn nên xem lại phần kiểu dữ liệu cấu trúc.
cái này câu trắc nghiệm bài kiểm tra bạn ạ, bình thường không ai khai báo như vậy cả
Một bài toán có thể có nhiều cách giải, cũng là khai báo nhưng có nhiều cách khai báo khác nhau. Miễn sao chương trình chạy được và ra đúng yêu cầu. Nếu bạn chưa từng khai báo như vậy thì đây là để bạn học thêm 1 cách khác. Tóm lại thì những gì bạn không biết thì không có nghĩa là nó không tồn tại.
P/s: Đây là topic hỏi bài trong lúc kiểm tra?
Không bạn, kiểm tra rồi, mình ôn tập lại thôi
mình thấy bạn này cần xem lại thái độ khi trao đổi với người khác, thứ nhất chưa kể đến vấn đề tuổi tác( ở đây cũng có khá nhiều vị tiền bối) thứ hai về cách mà bạn nói, nếu biết rồi thì bạn lên đây hỏi làm gì? sau khi được giải đáp thì lại coi như là mình biết hết rồi -_-
Mình hỏi pp[2].x nó ý nghĩa thế nào, bạn trả lời mình phần khai báo của pp và parr
Compile pp[2].x nó ra a=4. Mình không hiểu sao bằng 4, chứ mình ko hỏi cách khai báo của pp và parr…
Mình trao đổi bình thường, mình đã có nói là mình trả lời được câu hỏi đâu…
p/s: câu hỏi bài code này là giá trị in ra của a là bao nhiêu ( ĐA là 4) , mình không hiểu sao lại là 4
Đây nhé:
Mảng là một cấu trúc dữ liệu, bao gồm nhiều ô nhớ liên tiếp cạnh nhau. Địa chỉ của mảng cũng là địa chỉ ô nhớ đầu tiên trong mảng (và là ô nhớ ứng với phần tử đầu tiên)
Tức là
pp
có địa chỉ là địa chỉ củaparr[2]
Vì địa chỉ của mảng cũng là địa chỉ của ô nhớ đầu tiên, nên
&pp[0] == &parr[2]
Vì mảng là các ô nhớ liên tiếp cạnh nhau và
&pp[0] == &parr[2]
nên&pp[n] == &parr[n+2]
=>
&pp[2] == &parr[4]
pp
thì có kiểu dữ liệu làpoint*
,parr
thì có kiểu dữ liệu làpoint[]
, mà mảng thực chất lại cũng là con trỏ, coi như cũng làpoint*
. Có&pp[2] == &parr[4]
=>pp[2] == parr[4]
(== { 4, 19 }
)pp là con trỏ tới phần tử thứ 3 trong mảng arr, pp[2] là phần tử thứ 3 tính từ pp, nghĩa là phần tử thứ 5 tính từ arr, nên nó là arr[4], mà arr[4] là {4, 19}, nên arr[4].x là 4.