127 lines
2.3 KiB
Markdown
127 lines
2.3 KiB
Markdown
### 地址、指针、指针变量
|
|
|
|
```c
|
|
#include <stdio.h>
|
|
|
|
int main(){
|
|
int a = 1;
|
|
int* p;//p指针变量 可以用来存储整型变量的地址
|
|
double d = .3;
|
|
//数据类型 变量名;
|
|
//数据类型* 变量名;
|
|
//&取地址符
|
|
printf("&a=%d\n", &a);
|
|
printf("&d=%d\n", &d);
|
|
//1.使用指针变量存起来
|
|
p = &a;
|
|
printf("p=%d\n", p);
|
|
//间接访问符 *
|
|
//*p <=> a
|
|
*p = 10;
|
|
printf("*p=%d\n", *p);
|
|
printf("a=%d\n", a);
|
|
|
|
void* jk;
|
|
jk = &a;
|
|
printf("%d\n", *(int *)jk);
|
|
|
|
return 0;
|
|
}
|
|
|
|
```
|
|
|
|
### 指针与二级指针
|
|
|
|
```c
|
|
#include <stdio.h>
|
|
|
|
int main(){
|
|
int a = 1;
|
|
int *p;//一级指针 可以指向一个整型变量的地址
|
|
int **q; //二级指针 可以指向一个整型指针变量的地址
|
|
p = &a;//a的地址
|
|
q = &p;//p的地址
|
|
|
|
printf("a=%d\n", a);
|
|
printf("*p=%d\n", *p);//*p <=> a
|
|
printf("**q=%d\n", **q);//*q <=> p **q <=> a
|
|
|
|
return 0;
|
|
}
|
|
|
|
```
|
|
|
|
### 指针作为函数形参
|
|
|
|
```c
|
|
#include <stdio.h>
|
|
/*
|
|
指针与函数
|
|
1.形参是指针变量
|
|
2.返回值是指针变量
|
|
*/
|
|
//编写一个函数,传入两个整数/地址,将两个数的值交换
|
|
//函数在调用过程中
|
|
void swap(int* a, int* b){//值传递
|
|
int t;
|
|
t = *a;
|
|
*a = *b;
|
|
*b = t;//使用中间变量交换两个变量的值
|
|
printf("swap: %d %d\n", *a, *b);
|
|
}
|
|
|
|
int main(){
|
|
int a, b;
|
|
a = 1;
|
|
b = 2;
|
|
swap(&a, &b);
|
|
printf("main: %d %d\n", a, b);
|
|
|
|
return 0;
|
|
}
|
|
|
|
```
|
|
|
|
### 指针与一维数组的关系
|
|
|
|
```c
|
|
#include <stdio.h>
|
|
/*
|
|
指针与数组的关系
|
|
|
|
指针与一维数组
|
|
*/
|
|
int main(){
|
|
|
|
int nums[] = {1, 2, 3, 4, 5};
|
|
//数组在内存中是连续存储 指针变量运算后会得到下一个/前一个
|
|
//nums是一个指针 指向自己这个数组的第一个元素
|
|
//nums[下标] <=> *(nums+下标)
|
|
//C语言中只有 *(nums+下标)写法
|
|
//编译器会将 nums[下标]翻译成上面这种
|
|
int *p;
|
|
p = nums;//nums、p都可以指向该数组的第一个元素
|
|
//p可以进行赋值运算 但是 nums不行 因为他只是一个虚拟的指针 只能使用*
|
|
printf("%d\n", *nums);
|
|
printf("%d\n", *(nums+1));
|
|
printf("%d\n", *p++);//1
|
|
printf("%d\n", *p++);//2
|
|
printf("%d\n", *p++);//3
|
|
printf("%d\n", *p++);//4
|
|
printf("%d\n", *p);//5
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
```
|
|
|
|
### 指针实现一维数组的倒置
|
|
|
|
|
|
|
|
### 指针对字符串/数组进行去重
|
|
|
|
|
|
|
|
### 指针实现字符串的替换 |