【指针】-4
程序员文章站
2022-03-26 13:09:21
...
指针的定义
地址
内存单元的编号
从零开始的非负整数
范围:【0–2^64-1】
指针的分类
1. 基本类型指针
2. 指针与数组
3. 指针与函数
4. 指针和结构体
5. 多级指针
交换两个数字
void huhuan3(int * p, int * q);
int main()
{
int a = 3;
int b = 5;
huhuan3(&a, &b);
printf("a= %d, b=%d\ n",a,b);
}
//不能完成互换功能
void huhuan1(int, int)
{
int t;
t = a;
a = b;
b = t;
return;
}
//不能完成互换功能
void huhuan2(int * p , int * q)
{
int *t;//如果要互换p和q的值,则t必须int *,不能是int,否则会出错
t = p;
p = q;
q = t;
return;
}
void huhuan3(int * p, int * q)
{
int t;//如果要互换p和q的值,则t必须int ,不能是int *,否则会出错
t = *p;//p是int *,*p是int
*p = *q;
*q = t;
return;
}
*的含义
- 乘法
- 定义指针变量
int *p;
//定义了一个名字叫p的变量,int *表示只存放int变量的地址 - 指针运算符
该运算符放在已经定义好的指针变量的前面
如果p是一个已经定义好的指针变量
则*p表示以p的内容为地址的变量
补充:形参与实参是否为同一变量?
void f(int i)
{
i = 99;
}
int main()
{
int i = 6;
printf("i=%d\n", i);
f(i);
printf("i=%d\n", i);
}
i=6
i=6
请按任意键继续. . .
为局部变量形参分配空间
void swap_2(int *p, int *q)//形参名字是p和q,接收实参数据的是p和q
{
int * t;
t = p; p = q; q = t;
}
int main()
{
int a = 5;
int b = 3;
swap_2(&a, &b);
printf("a=%d,b=%d\n", a, b);
return 0;
}