การส่ง array เป็นพารามิเตอร์ไปยังฟังก์ชัน

Download Report

Transcript การส่ง array เป็นพารามิเตอร์ไปยังฟังก์ชัน

886201
หลักการโปรแกรม 1
Lecture 14: โปรแกรมยอย
(การส่งพารามิเตอร ์
่
แบบ pass by reference)
ชือ
่ ฟังกชั
์ น(function name) และ
พารามิเตอร ์ (parameter list)
ชือ
่ ฟังกชั
์ น(function name)
ชือ
่ ฟังกชั
่
์ นเป็ นไปตามกฏการตัง้ ชือ
ในภาษา C++
พารามิเตอร ์ (parameter list)
คือ คาที
่ ก
ู ส่งไปยังฟังกชั
่ ฟังกชั
่ ถ
์ นเมือ
์ นถูก
เรียกใช้
ตัวอยาง:
่
float cube (float x)
/* พารามิเตอร ์
1 ตัวคือ x */
การส่งพารามิเตอรไปยั
งฟังกชั
์
์ น
• Pass by value
ทาการ copy คาส
ไมมี
่ ่ งไปยังฟังกชั
์ น
่ การ
เปลีย
่ นแปลงคาตั
่ วแปรทางฝั่งของผูเรี
้ ยก
• Pass by reference
ส่งตัวแทนของตัวแปรไปยังฟังกชั
์ น
(reference) ฟังกชั
์ นรับ "ตัวแทนของตัวแปร"
ไปดาเนินการเปลีย
่ นแปลงตัวแปร ส่งผลตอค
่ า่
ของตัวแปรทางฝั่งของผูเรี
้ ยก
ตัวอยาง
pass by value
่
#include <iostream>
using namespace std;
// การประกาศรูปแบบการใช้งานของฟังกชั
์ น
double square ( double x );
// การประกาศฟังกชั
์ น - การกาหนดรายละเอียดการทางาน
double square ( double x )
{
return x * x;
}
int
{
main ( ) // โปรแกรมหลัก
double
a;
// การเรียกใช้งานฟังกชั
์ น
a = square(4);
cout << "a = " << a << endl;
}
return 0;
ตัวอยาง
pass by value
่
#include <iostream>
using namespace std;
int larger_of(int a, int b);
ของฟังกชั
์ น
// การประกาศรูปแบบการใช้งาน
// การประกาศฟังกชั
์ น - การกาหนดรายละเอียดการทางาน
int larger_of(int a, int b)
{
if ( a > b )
return a;
return b;
}
int
{
main ( ) // โปรแกรมหลัก
int x, y;
cin >> x >> y;
cout << larger_of(x, y) << endl;
ฟังกชั
์ น
// การเรียกใช้งาน
ตัวอยาง
pass by value
่
#include <iostream>
// exchange - ตองการให
แลกเปลีย
่ น
้
้
using namespace std;
"คา"
ของตัวแปร 2 ตัว
่
void exchange ( int p, int q )
// function prototype
{
void exchange ( int p, int q int
t;
// ตัวแปรชัว
่ คราว
สาหรับพักคา่
);
t = p;
p = q;
int main( )
{
q = t;
int
x, y;
}
cout << "Enter x : "; cin >> x;
cout << "Enter y : "; cin >> y;
exchange(x, y);
cout << endl;
cout << "After calling
swap(x, y)" << endl;
cout << "------------------------"
<< endl;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
ตัวอยาง
pass by reference
่
#include <iostream>
// exchange - ตองการให
แลกเปลีย
่ น
้
้
using namespace std;
"คา"
ของตัวแปร 2 ตัว
่
void exchange ( int& p, int& q )
// function prototype
{
void exchange ( int& p, int& int
t;
// ตัวแปรชัว
่ คราว
สาหรับพักคา่
q );
t = p;
p = q;
int main( )
{
q = t;
int
x, y;
}
cout << "Enter x : "; cin >> x;
cout << "Enter y : "; cin >> y;
exchange(x, y);
cout << endl;
cout << "After calling
swap(x, y)" << endl;
cout << "------------------------"
<< endl;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
การส่ง array เป็ นพารามิเตอร์ไปยัง
ฟัการส
งก์งชนarray
ั เป็ นพารามิเตอรไปยังฟังกชันเป็ นการสงแบบ
•
่
์
์
่
pass by reference
• ถาการท
างานในฟังกชั
่ นแปลงคาใน
array จะเป็ น
้
่
์ นมีการเปลีย
การเปลีย
่ นคาแบบถาวร
่
การส่ง array 2 มิติเป็ นพารามิเตอร์ไป
ยัการส
งฟังงก์array
ชนั 2 มิติ เป็ นพารามิเตอรไปยังฟังกชันเป็ นการสงแบบ
•
่
์
์
่
pass by reference
• ตอนรับพารามิเตอร ์ ตองระบุ
จานวน column ใน header
้
ของฟังกชั
์ น
แบบฝึ กหัด
void prevnext(int a, int& prv, int nxt)
{
prv = a - 1;
nxt = a + 1;
}
int main()
{
int a = 100; int b = 0; int c = 0;
prevnext(a, b, c);
cout << "Previous = ” << b << “Next = ” << c << endl;
return 0;
}
แบบฝึ กหัด
int x;
void func1(int& a)
{
a = 3;
}
void func2(int b)
{
b = 4;
}
void func3()
{
int x;
x = 5;
}
void func4()
{
x = 7;
}
int main()
{
x = 15;
func1(x);
cout << x
x = 16;
func2(x);
cout << x
x = 17;
func3();
cout << x
x = 18;
func4();
cout << x
return 0;
}
<< endl;
<< endl;
<< endl;
<< endl;