内容纲要
指针和数组
1.指针指向的数组,解引用时,数组第一
个地址为 arr[0] 的地址2.*我测试了一下 p++ 和 p++ 对于指针解引用遍历数组是一样的。都是让地址 + 一个数组类型的字节长度**
#include <iostream>
using namespace std;
int main(){
int arr[5] = { 1, 2, 3, 4 };
int * p = arr;
cout << "数组索引获取第一个元素" << arr[0] << endl;//1
cout << "用指针获取数组第一个元素" << *p << endl;//1
cout << "sizeof(arr) / sizeof(arr[0]) = " << sizeof(arr) / sizeof(arr[0]) << endl; // sizeof(arr) / sizeof(arr[0]) = 5
//根据指针遍历数组
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
cout << "通过指针来遍历数组:" << *p << endl;
//p++;
*p++;
}
system("pause");
return 0;
}
指针和函数
作用:利用指针作为函数参数,可以修改实参的值
- 地址传递就是JAVA中的引用传递嘛。
#include <iostream>
using namespace std;
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int main(){
int a = 10;
int b = 20;
int * c = &a;
int * d = &b;
swap(c, d);
cout << "a的值为:" << a << endl;//20
cout << "b的值为:" << b << endl;//10
system("pause");
return 0;
}
指针、数组、函数案例
案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序。
案例数组:int arr[10]={4,3,6,9,1,2,10,8,7,5};
bubble.cpp
#include <iostream>
#include "bubble.h"
using namespace std;
int main(){
int arr[10] = { 4, 3, 6, 9, 1, 2, 10, 8, 7, 5 };
int length = sizeof(arr) / sizeof(arr[0]);
arrBubble(arr,length);
printArr(arr,length);
system("pause");
return 0;
}
void arrBubble(int *arr,int length){
//使用无返回的函数,函数内通过指针来完成对实参的修正。
for (int i = 0; i < length - 1; i++)
{
for (int j = 0; j < length - i - 1; j++)
{
if (arr[j] > arr[j+1])
{
int temp = arr[j];//不这样写怕arr[]传一个空的进来吗。
arr[j] = arr[j + 1];
arr[j+1] = temp;
}
}
}
}
void printArr(int *arr,int length){
for (int i = 0; i < length; i++)
{
cout << arr[i] << endl;
}
}
bubble.h
#include <iostream>
using namespace std;
void arrBubble(int *arr,int length);
void printArr(int *arr,int length);
睡了睡了,狗命要紧