Professional Documents
Culture Documents
Week02
Week02
MSSV: 21120297
Lớp 21CTT3B
B. struct point { double x, double y }; Sai dấu , sửa thành ; và thiếu dấu ; sau y
E. struct point { double x; double y; } Dư dấu ; sau y và thiếu dấu ; sau câu lệnh
C. typedef struct { double x; double y; }; Thiếu từ khóa để rút gọn khi dùng typedef
Bài 9: Ba chương trình dưới đây khác nhau như thế nào?
int main(void) {
return 0;
}
(b) #include <stdio.h>
int main(void) {
Point test;
return 0;
int main(void) {
return 0;
(a) Sử dụng cú pháp thông thường của Struct, có thể thấy thông qua việc khai báo “struct point
test;”
(b) Chương trình này đã sử dụng Point thay vì phải khai báo struct point như (a), tiện hơn khi
khai báo biến
(c) Chương trình này đã sử dụng hàm xây dựng (constructor) qua việc khai báo biến test kiểu
Point như sau: “Point test = {.25, .75};”
Bài 10: Giả sử x = 5, y = 10. Sau khi gọi hàm swap1(x, y) thì giá trị của x và y thay đổi thế
nào?
int t;
t = a; a = b; b = t;
Sau khi gọi hàm swap1, x và y không thay đổi gì. Lí do là hàm đang truyền tham trị. Khi truyền
vào hàm, thực chất a và b là 2 biến mới được tạo ra khác hoàn toàn 2 biến x và y. a và b chỉ đc
copy giá trị từ x và y. Do đó mà khi truyền tham trị, chỉ có a và b thay đổi còn x và y không ảnh
hưởng gì cả.
Bài 11: Giả sử x = 5, y = 10. Sau khi gọi hàm swap2(&x, &y) thì giá trị của x và y thay đổi
thế nào?
int t;
Lúc này x = 10 và y = 5, 2 giá trị được hoán đổi cho nhau. Lí do là vì chúng ta đã truyền con trỏ
vào hàm. Có nghĩa là ta đang truyền địa chỉ của x cho con trỏ pa, địa chỉ của y cho con trỏ pb. Lúc
này khi con trỏ pa và pb hoán đổi giá trị thì x và y được trỏ tới cũng sẽ thay đổi theo.
Bài 12: Cho int x[5] = {0, 1, 2, 3, 4}. Các câu lệnh gọi hàm print3(&x[0]), print3(&x[2]),
print3(&x[4]) sẽ in ra gì?
int i;
print3(&x[0]): In ra 0 1 2
print3(&x[2]): In ra 2 3 4