Chương 1: Tổng quan về kỹ thuật lập trình

32 0 0
Tài liệu đã được kiểm tra trùng lặp
Chương 1:  Tổng quan về kỹ thuật lập trình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 1 Tổng quan về kỹ thuật lập trình Chương 2 Quản lý bộ nhớ Biến tên biến, vùng nhớ và giá trị biến • Mỗi biến trong C có tên và giá trị tương ứng Khi một biến được khai báo, một vùng nhớ trong m[.]

Chương 2: Quản lý nhớ Biến: tên biến, vùng nhớ giá trị biến • Mỗi biến C có tên giá trị tương ứng Khi biến khai báo, vùng nhớ máy tính cấp phát để lưu giá trị biến Kích thước vùng nhớ phu thuộc kiểu biến, ví dụ byte cho kiểu int int x = 10; • Khi lệnh thực hiện, trình biên dịch thiết lập để byte vùng nhớ lưu giá trị 10 • Phép tốn & trả địa x, nghĩa địa ô nhớ vùng nhớ lưu trữ giá trị x Biến: tên biến, vùng nhớ giá trị biến • Mỗi biến C có tên giá trị tương ứng Khi biến khai báo, vùng nhớ máy tính cấp phát để lưu giá trị biến Kích thước vùng nhớ phu thuộc kiểu biến, ví dụ byte cho kiểu int int x = 10; • Khi lệnh thực hiện, trình biên dịch thiết lập để byte vùng nhớ lưu giá trị 10 • Phép tốn & trả địa x, nghĩa địa ô nhớ vùng nhớ lưu trữ giá trị x Biến: tên biến, vùng nhớ giá trị biến Tên biến x tham chiếu đến vị trí vùng nhớ Địa vị trí vùng nhớ 65329 Giá trị lưu vùng nhớ 10 65325 65324 • int x = 10; • x biểu diễn tên biến (e.g an assigned name for a memory location ) • &x biểu diễn địa nhớ đầu tiền thuộc vùng nhớ x, tức 65325 • *(&x) or x biểu diễn giá trị lưu vùng nhớ x, tức 10 Chương trình ví dụ #include int main() { int x = 10; printf("Value of x is %d\n",x); printf("Address of x in Hex is %p\n",&x); printf("Address of x in decimal is %lu\n",&x); printf("Value at address of x is %d\n",*(&x)); return 0; } Value of x is 10 Address of x in Hex is 0061FF0C Address of x in decimal is 6422284 Value at address of x is 10 Khái niệm trỏ • Con trỏ biến chứa địa vùng nhớ biến khác • Cú pháp chung khai báo biến trỏ data_type* ptr_name; • Ký hiệu '*’ thơng báo cho trình biên dịch ptr_name biến trỏ data_type định trỏ trỏ tới địa vùng nhớ biến kiểu data_type Tham chiếu ngược (dereference) biến trỏ ▪ Chúng ta “tham chiếu ngược" trỏ, nghĩa lấy giá trị biến mà trỏ trỏ vào cách dùng pháp tốn ‘*’, chẳng hạn *ptr ▪ Do đó, *ptr có giá trị 10, 10 giá trị x Ví dụ trỏ int x = 10; int *p = &x; Nếu trỏ p giữ địa biến a, ta nói p trỏ tới biến a *p biểu diễn giá trị lưu địa p *p gọi “tham chiếu ngược” trỏ p • Con trỏ dùng để lấy địa biến trỏ vào, đồng thời lấy giá trị biến Con trỏ int x = 10; int *ptr; ptr = &x; 65329 Tên biến x 65325 10 65324 Tên biến trỏ ptr 65320 65325 *ptr Biến trỏ 65329 Biến int x = 10; &x biểu diễn địa x x biểu diễn giá trị lưu địa 65325 &x 65324 10 10 Con trỏ int *p; p khai báo trỏ int p = &a; p giữ giá trị địa a, i.e.65325 *p biểu diễn giá trị lưu p, ie.10 int b = *p; b có giá trị 10 *p = 20; a có giá trị 20 int *p; *p = 10; // this is not correct 10 Con trỏ mảng Tuy cần ý a nên khơng thể dùng câu lệnh gán hay tốn tử tăng, giảm a++; • Xét trỏ: int *pa; pa = &a[0]; Khi pa trỏ vào phần tử thứ mảng pa +1 trỏ vào phần tử thứ mảng *(pa+i) nội dung a[i] 18 Con trỏ xâu • Ta có char tinhthanh[30] =“Da Lat”; • Tương đương : char *tinhthanh; tinhthanh=“Da lat”; Hoặc: char *tinhthanh =“Da lat”; • Ngồi thao tác xâu tương tự mảng *(tinhthanh+3) = “l” • Chú ý : với xâu thường khơng thể gán trực tiếp dòng thứ 19 Mảng trỏ • Con trỏ loại liệu nên ta tạo mảng phần tử trỏ theo dạng thức *[số phần tử]; Ví dụ: char *ds[10]; ▫ ds mảng gồm 10 phần tử, phần tử trỏ kiểu char, dùng để lưu trữ 10 xâu ký tự • Cũng có thẻ khởi tạo trực tiếp giá trị khai báo char * ma[10] = {“mot”,”hai”,”ba” }; 20 ... vùng nhớ phu thuộc kiểu biến, ví dụ byte cho kiểu int int x = 10; • Khi lệnh thực hiện, trình biên dịch thiết lập để byte vùng nhớ lưu giá trị 10 • Phép tốn & trả địa x, nghĩa địa ô nhớ vùng nhớ... vùng nhớ phu thuộc kiểu biến, ví dụ byte cho kiểu int int x = 10; • Khi lệnh thực hiện, trình biên dịch thiết lập để byte vùng nhớ lưu giá trị 10 • Phép tốn & trả địa x, nghĩa địa ô nhớ vùng nhớ... nhớ đầu tiền thuộc vùng nhớ x, tức 65325 • *(&x) or x biểu diễn giá trị lưu vùng nhớ x, tức 10 Chương trình ví dụ #include int main() { int x = 10; printf("Value of x is %d\n",x); printf("Address

Ngày đăng: 22/11/2022, 22:00

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan