1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu hàm và thư viện lập trình phần 5 doc

5 282 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 160,97 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi nào sử dụng truyền ₫ịa chỉ?. ƒ Khi cần thay ₫ổi "biến ₫ầu vào" truy nhập trực tiếp vào ô nhớ, không qua bản sao ƒ Khi kích cỡ kiểu dữ liệu lớn => tránh sao chép dữ liệu vào ngăn xếp

Trang 1

3.3.2 Truyền ₫ịa chỉ

int SumInt(int* p, int N);

// Function call

void main() {

int a[] = {1, 2, 3, 4};

int k = SumInt(a,4);

}

// Function definition

int SumInt(int* p, int N) {

int *p2 = p + N, k = 0;

while (p < p2)

k += *p++;

return k;

SP

a[0]=1 a[1]=2 a[2]=3 a[3]=4

00A0

k p=00A0 N=4 k SP

k = 45

k = 45

Trang 2

Truyền mảng tham số?

int SumInt(int p[4], int N);

// Function call

void main() {

int a[] = {1, 2, 3, 4};

int k = SumInt(a,4);

}

// Function definition

int SumInt(int p[4], int N) {

int *p2 = p + N, k = 0;

while (p < p2)

k += *p++;

return k;

Bản chất như trong ví dụ trước:

Truyền ₫ịa chỉ!

Trang 3

Thử lại ví dụ ₫ọc từ bàn phím

#include <iostream.h>

void ReadInt(const char* userPrompt, int* pN) {

cout << userPrompt;

cin >> *pN;

}

void main() {

int x = 5;

ReadInt("Input an integer number:", &x);

cout << "Now x is " << x;

}

ƒ Kết quả: x thay ₫ổi giá trị sau ₫ó (cũng là lý do tại sao hàm

scanf() lại yêu cầu kiểu tham biến là con trỏ!)

Trang 4

Khi nào sử dụng truyền ₫ịa chỉ?

ƒ Khi cần thay ₫ổi "biến ₫ầu vào" (truy nhập trực tiếp vào ô nhớ, không qua bản sao)

ƒ Khi kích cỡ kiểu dữ liệu lớn => tránh sao chép dữ liệu vào ngăn xếp

ƒ Truyền tham số là một mảng => bắt buộc truyền ₫ịa chỉ

ƒ Lưu ý: Sử dụng con trỏ ₫ể truyền ₫ịa chỉ của vùng

nhớ dữ liệu ₫ầu vào Bản thân con trỏ có thể thay ₫ổi

₫ược trong hàm nhưng ₫ịa chỉ vùng nhớ không thay

₫ổi (nội dung của vùng nhớ ₫ó thay ₫ổi ₫ược): xem ví

dụ biến p trong hàm SumInt trang 21.

Trang 5

3.3.3 Truyền tham chiếu (C++)

#include <iostream.h>

void ReadInt(const char* userPrompt, int& N) {

cout << userPrompt;

cin >> N;

}

void main() {

int x = 5;

ReadInt("Input an integer number:", x);

cout << "Now x is " << x;

}

ƒ Kết quả: x thay ₫ổi giá trị sau ₫ó

Ngày đăng: 31/07/2014, 04:20

TỪ KHÓA LIÊN QUAN