pointer 指標
# POINTER
由 Jirka Matousek from Brussels Taipei Hong Kong Singapore Prague Shenzhen - Taipei, Taiwan, CC BY 2.0,
https://commons.wikimedia.org/w/index.php?curid=125896874
名稱:臺北市立第一女子高級中學
地址:臺北市中正區重慶南路一段165號
變數的名稱
變數的記憶體位置
變數的值
(指標裡存的東西)
0 |
0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
= 1 bit
= 1 byte
# POINTER
# POINTER
int a = 10;
int& b = a;
在電腦科學中,指標(英語:Pointer),
是在許多程式語言中用來儲存記憶體位址的變數。
指標變數的值直接指向(points to)存在該位址的對象的值。
# POINTER
# POINTER
指向
int n = 10;
int *ptr = &n;
# POINTER
int* ptr;
int *ptr;
資料型態* 變數名;
資料型態 *變數名;
宣告多個指標
int* a, b, c;
int* a;
int b;
int c;
int* a, * b, * c;
int *a, *b, *c;
int* a;
int* b;
int* c;
# POINTER
int n = 10;
int *ptr = &n;
cout << *ptr; // 10
*指標變數
++
、--
,高於算術運算子*ptr++; // *(ptr++)
*ptr + 1; // (*ptr) + 1
為了避免搞混,建議都加上()
# POINTER
int n;
int *ptr = &n;
double n;
int *ptr = &n;
// error: cannot initialize a variable of type 'int *' with an rvalue of type 'double *'
int *ptr = 0;
int *ptr = NULL; // C
int *ptr = nullptr; // C++
# POINTER
int *ptr;
int n;
ptr = &n;
*ptr = 10; // n = 10;
int n;
int *ptr = &n;
# POINTER
int arr[10];
int *ptr;
ptr = arr; // ptr = &arr[0];
ptr
指向 arr[0],
ptr+1
指向 arr[1]
,以此類推
指標的加減 = 紀錄的位址 +(-)
該資料型態的位元組數
int
大小為 4 bytes
,+1
等於向後移動 4 個位元組# POINTER
int arr[10];
int *ptr;
ptr = arr; // ptr = &arr[0];
ptr++; // ptr = &arr[0] + 1;
arr++;
arr += 2;
#include <iostream>
using namespace std;
void swap(/* 你要寫的地方 */) {
// 你要寫的地方
}
int main() {
int a = 1, b = 2;
cout << "a = " << a << ", b = " << b << endl;
swap(/* 你要寫的地方 */);
cout << "a = " << a << ", b = " << b << endl;
return 0;
}
swap,交換傳入的兩個數值
# POINTER
# POINTER
# POINTER
int main() {
swap(a, b);
}
void swap(int x, int y) {
}
int x = a;
int y = b;
# POINTER
int main() {
swap(&a, &b);
}
void swap(int *x, int *y) {
}
int *x = &a;
int *y = &b;
# POINTER
int main() {
swap(a, b);
}
void swap(int &x, int &y) {
}
int &x = a;
int &y = b;
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
return;
}
int main() {
int a = 1, b = 2;
cout << "a = " << a << ", b = " << b << endl;
swap(a, b);
cout << "a = " << a << ", b = " << b << endl;
return 0;
}
/*
結果:
a = 1, b = 2
a = 1, b = 2
*/
# POINTER
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
return;
}
int main() {
int a = 1, b = 2;
cout << "a = " << a << ", b = " << b << endl;
swap(&a, &b);
cout << "a = " << a << ", b = " << b << endl;
return 0;
}
/*
結果:
a = 1, b = 2
a = 2, b = 1
*/
# POINTER
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
return;
}
int main() {
int a = 1, b = 2;
cout << "a = " << a << ", b = " << b << endl;
swap(a, b);
cout << "a = " << a << ", b = " << b << endl;
return 0;
}
/*
結果:
a = 1, b = 2
a = 2, b = 1
*/
# POINTER
社慶 & 聖誕節活動
活動日期:12/27(五)
活動時間:16:30 ~ 17:10
活動地點:學珠樓 B2 表演中心
活動內容:交換禮物 & 小遊戲!