1. 函数 数组 指针相关
1.1 定义并简单使用指针
int a;
int *p; \定义指针
p = &a; \a地址送指向整形数据的指针变量
#include<iostream>
using namespace std;
int main() {
int a, b;
int *p, *q;
p = &a;
q = &b;
// 0x7ffde76283c8 0x7ffde76283cc
cout << p << ' ' << q << endl;
// 0 0
cout << *p << ' ' << *q << endl;
}
1.2 函数-操作数组
函数操作数组,一般不仅要传数组头指针,而且要传数组长度.
int sum_L(int *, int);
int main() {
int L[] = { 3, 38, 5, 44, 15, 36, 26,
27, 2, 46, 4, 19, 47, 48, 50 };
int length = sizeof(L) / sizeof(L[0]);
int res = sum_L(L, length);
cout << res << endl;
return 0;
}
// A指针只接受整型数据地址,
// 因 L 是 int 型数据地址, A = L 就正确.
int sum_L(int *A, int len) {
int sum = 0;
for (int i = 0; i < len; i++)
sum += *(A + i); // 指针操作数组
return sum;
}
1.3 函数参数-指针调用
形式参数为指针,与实际参数指向相同的变量. 修改形参,影响实参.
void swap(int *, int *);
int main(){
int a = 2, b = 3;
cout << a << ' ' << b << endl;
swap(&a, &b); // here
cout << a << ' ' << b << endl;
}
void swap(int *a, int *b){ // here
int temp;
temp = *a; *a = *b; *b = temp;
}
1.4 函数参数-引用调用
形参是实参的别名.
// 函数声明
void swap(int &x, int &y);
int main() {
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
/* 调用函数来交换值 */
swap(a, b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
// 函数定义
void swap(int &x, int &y) {
int temp;
temp = x; /* 保存地址 x 的值 */
x = y; /* 把 y 赋值给 x */
y = temp; /* 把 x 赋值给 y */
return;
}