指针
每一个变量都有一个内存位置, 每一个内存位置都定义了可使用 & 运算符访问的地址, 它表示了在内存中的一个地址.
指针也就是内存地址, 指针变量是用来存放内存地址的变量.
int a = 1;
int * p = NULL;
p = &a;
printf("变量a的地址为: %p", p);
printf("内存上存储的值为: %d", *p);
// *号: 间接运算符, 也叫解引用运算符, 用来获取对应地址存储的值
*p = 10;
printf("变量a的值为: %d", a); // a = 10
交换变量的值
#include <stdio.h>
void swap_value(int * v1, int * v2)
{
int temp;
temp = *v1;
*v1 = *v2;
*v2 = temp;
}
int main()
{
int a = 1, b = 10;
swap_value(&a, &b);
printf("a = %d, b = %d", a, b);
return 0;
}
const类型
-
const
在定义指针前面, 不能通过指针改变指向变量的值int a = 1, b = 10; const int* p = &a; *p = 20; // !!!报错!!! a = 20; // 可以这样改变值 p = &b; // 可以改变指针的指向
-
const
在定义指针后面, 不能改变指针的指向int a = 1, b = 10; int* const p = &a; *p = 20; // 可以改变值 p = &b; // !!!报错!!!
-
const
在定义指针的前面和后面, 兼顾以上两种int a = 1, b = 10; const int* const p = &a; *p = 20; // !!!报错!!! p = &b; // !!!报错!!!