-
23-10-2015, 11:58 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
A/c giỏi c++ giúp giùm e mấy bài này với.
Kết quả của chương trình dưới đây là gì? Hãy giải thích.
#include <stdio.h>
int main(){
int i = 158;
char c = i;
int j = c;
printf("%d",j);
return 0;
}
Hãy giải thích điều gì xảy ra khi chạy đoạn mã sau:
void main(){
char * p = new char[30];
p = "hello";
delete [] p;
}
Kết quả in ra màn hình của đoạn mã sau là gì? Giải thích.
#include <stdio.h>
#define add(x, y, z) x + y + z
int main(){
float a = (add(10, 2, 1) * 5.0f);
printf("%f",a);
return 0;
}View more random threads:
- A/c giỏi c++ giúp giùm e mấy bài này với.
- Ae có code ngắn hơn về nhập ma trận xoắn óc ko ????
- Có hay không sự sa sút của Apple?
- Thắc mắc về Delegate
- Hoạt động của phép toán i++, ++i trong vong lặp for
- Hỏi về Modifier trong lập trình C
- Xin provision
- Thắc mắc về unit testing???
- Khái niệm cơ bản về Object C
- Pointer
-
23-10-2015, 03:54 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cái đầu = -98. Vì ở dòng char c = i; tương đương char c = 158; Nhưng kiểu char nhận giá trị 1 byte. Do đó khi quá nó sẽ vòng ngược lại, giống vòng tròn ấy. Nghĩa là c = 127 + 31. Từ -128 đến -99 là có 30 giá trị. Vậy giá trị thứ 31 là -98.
Cái thứ hai là một con trỏ tên p, trỏ đến một mảng char có 30 phần tử. Nghĩa là cấp một vùng nhớ có 30 byte và cho p nhớ địa chỉ của 30 byte này. Sau đó gán các char h,e,l,l,o,\0 vào vùng 30 byte này. Cuối cùng là delete p nghĩa là delete cái ô nhớ ghi địa chỉ của 30 byte kia, chứ không delete nội dung của 30 byte
ra kết quả là 17 do add(10, 2, 1) sẽ được thay bằng 10 + 2 + 1 vậy câu lệnh sẽ thành (10 + 2 + 1 * 5.0f); Nhân ưu tiên trước => 10+2+5 = 17
-
23-10-2015, 04:07 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn có thể giải thích giùm cái vòng tròn được không, mình không hiểu lắm.
-
24-10-2015, 11:38 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi LPS86
sau khi gán p = "hello" thì p trỏ đến 1 vùng mới, không còn là cái 30 byte kia nữa. delete[] p sẽ gây lỗi.
-
24-10-2015, 02:04 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
0 1 2 3 4 .............. 126 127 -128 -127 -126 -125 -124..............-2 -1 0 1 2 3........
-
25-10-2015, 06:49 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Đúng là delete[] p sẽ gây lỗi nhưng nói "sau khi gán p = "hello" thì p trỏ đến 1 vùng mới" thì chưa hẳn.
Mã:char * p = new char[30];
-
25-10-2015, 07:41 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi LPS86
http://ideone.com/E2L9KY
Không chỉ dừng lại ở việc sử dụng nguyên liệu cao cấp, mỗi công trình còn được "chăm sóc" bằng 4 dịch vụ xuất sắc của Tre Nghệ. Từ việc tư vấn, thiết kế đến thi công và hoàn thiện, mọi quy trình đều...
Chất Lượng và Sáng Tạo: Kiến Trúc...