环境:ide:Mac+clion
视频链接:
https://www.bilibili.com/video/BV1Hb411Y7E5?p=5
指针常量和常量指针
int a = 10;
int b = 20;
//常量指针
const int *p1 = &a; //这里针对的是常量。 也就是a 的值不能修改。
//* p1 = 20; 这个就是错误的。
//p1 = &b; // 这就是对的。地址可以修改。
//指针常量
int * const p2 = &b;
* p2 = 30;//正确的。 可以对值进行修改。
//p2 = &a; //这个错误的。因为是指针常量,不能修改。
const int * const p3 = &a;//即是常量指针也是指针常量。都不能进行二次修改。
使用指针遍历数组
int arr[] = {1,2,3,4,5,6,7,8};
int *p = arr;//将首地址赋值给指针
cout << "首地址是:"<<p<<" 第一个值是:"<<*p<<endl;
for (int i=0;i<sizeof (arr)/sizeof (*p);i++){
cout << *p << " ";
p++;
}
cout << endl;
通过指针(地址传递)来进行两个数进行交换
int a = 10;
int b = 20;
//地址传递,在函数里面进行了地址从新赋值。
swap1(&a,&b);
cout << a << "," << b << endl;
void swap1(int * x,int * y){
int temp = *x;
*x = *y;
*y = temp;
}
练习:定义一个数组,采用冒泡排序法来排序,用到了指针。
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
int len = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, len);
printArray(arr, len);
//冒泡排序
void bubbleSort(int *arr, int len) {
for (int i = 0; i < len; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//打印
void printArray(int *arr, int len) {
for (int i = 0; i < len; i++) {
cout << *arr << " ";
arr++;
}
cout << endl;
}
结构体的定义以及使用
struct Sdudent{
string name;
int age;
int scores;
}student; // 这里定义的时候就创建了student 变量。
//结构体,自定义数据类型。
struct Sdudent s1; //定义方式1 struct 关键字可以省略
s1.name = "张三";
s1.age = 20;
s1.scores = 100;
struct Sdudent s2 = {"李四",30,90};//定义方式2 关键字可以省略
student.name = "王五"; // 定义结构体的时候,就创建了student的变量。
student.age = 40;
student.scores = 70;
//结构体数组,以及遍历。
struct Sdudent arr[] = {
{"张三",10,30},
{"李四",20,40},
{"王五",30,50},
};
arr[2].name = "zane";
for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++){
cout << arr[i].name << "," << arr[i].age << "," << arr[i].scores << endl;
}
网友评论