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 6 ppsx

5 444 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,39 KB

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

Nội dung

3.3.4 Kiểu trả về ƒ Kiểu trả về: gần như tùy ý, chỉ không thể trả về trực tiếp một mảng ƒ Về nguyên tắc, có thể trả về kiểu: — Giá trị — Con trỏ — Tham chiếu ƒ Tuy nhiên, cần rất thận tr

Trang 1

Thử ví dụ hàm swap

#include <iostream.h>

void swap(int& a, int& b) {

int temp = a;

a = b;

b = temp;

}

void main() {

int x = 5, y = 10;

swap(x,y);

cout << "Now x is " << x << ", y is " << y;

Trang 2

Khi nào sử dụng truyền tham chiếu?

ƒ Chỉ trong C++

ƒ 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)

ƒ Một tham biến tham chiếu có thể ₫óng vai trò là ₫ầu

ra (chứa kết quả), hoặc có thể vừa là ₫ầu vào và ₫ầu ra

ƒ 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, ví dụ:

void copyData(const Student& sv1, Student& sv2) {

sv2.birthday = sv1.birthday;

}

Trang 3

3.3.4 Kiểu trả về

ƒ Kiểu trả về: gần như tùy ý, chỉ không thể trả về trực tiếp một mảng

ƒ Về nguyên tắc, có thể trả về kiểu:

— Giá trị

— Con trỏ

— Tham chiếu

ƒ Tuy nhiên, cần rất thận trọng với trả về ₫ịa chỉ hoặc tham chiếu:

— Không bao giờ trả về con trỏ hoặc tham chiếu vào biến cục

bộ

— Không bao giờ trả về con trỏ hoặc tham chiếu vào tham

biến truyền qua giá trị

Trang 4

Cơ chế trả về

int SumInt(int a, int b) {

int k = 0;

for (int i=a; i <= b; ++i)

k +=i;

return k;

}

void main() {

int x = 5, k = 0;

k = SumInt(x,10);

}

SP

x = 5

k =0

Ngăn xếp

SP

a = 5

b = 10

k => 45

45

k = 45

Trang 5

Trả về con trỏ

int* FindMax(int* p, int n) {

int *pMax = p;

int *p2 = p + n;

while (p < p2) {

if (*p > *pMax)

pMax = p;

++p;

}

return pMax;

}

void main() {

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

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

TỪ KHÓA LIÊN QUAN