1.指针定义、初始化
什么是指针呢,用我们生活中的例子来说就比如是超市里面存货柜的编号、外卖箱的箱号等等。 那么它是干什么的呢?我们是不是可以通过这个编号、箱号找到对应的货柜、外卖箱对不对,那么我们的指针也是有着异曲同工之处,只不过指针是计算机内存里面的存储单元的地址,我们通常会拿一个变量来存放这个地址 ,我们把他称为指针变量 。 那么现在我们来定义一个指针,看看指针是如何定义的。
#include <stdio.h>
int main(int argc,const char *argv[])
{
int a = 10; // 定义一个变量
int * p; // 定义一个指针变量: 所指数据类型 * 指针变量名
// 这里我们需要将指针指向整型变量a,所以定义是int型
p = &a; // 对指针p 进行赋值 ,& : 是取地址符,就是获取变量a 的地址
return 0;
}
那么现在变量p 就是一个指针变量,它存储的数据就是变量a的地址,那么我们现在就可以通过这个指针变量来访问变量a的值了
#include <stdio.h>
int main(int argc,const char *argv[])
{
int a = 10; // 定义一个变量
int * p; // 定义一个指针变量: 所指数据类型 * 指针变量名
// 这里我们需要将指针指向整型变量a,所以定义是int型
p = &a; // 对指针p 进行赋值 ,& : 是取地址符,就是获取变量a 的地址
printf("a = %d\n",*p); // *p 就是对变量进行取值,就是获取该指针所指向的值
return 0;
}
j结果输出为:
2.指针作为参数传入函数,交换两个变量的值
#include <stdio.h>
// 声明一个函数,ChangeVariable,用于交换两个整数指针所指向的值
void ChangeVariable(int * p, int * q);
int main(int argc, const char* argv[])
{
int a = 10, b = 6; // 定义两个整数变量 a 和 b,并分别赋值 10 和 6
int * p, * q; // 定义两个整数指针 p 和 q
p = &a; // 将 p 指向变量 a 的地址
q = &b; // 将 q 指向变量 b 的地址
// 输出交换前的 a 和 b 的值
printf("a = %d, b = %d\n", a, b);
// 调用 ChangeVariable 函数,用 p 和 q 作为参数
ChangeVariable(p, q);
// 输出交换后的 a 和 b 的值
printf("a = %d, b = %d\n", a, b);
return 0; // 返回 0,表示程序正常结束
}
// 定义 ChangeVariable 函数,用于交换两个指针所指向的整数值
void ChangeVariable(int * p, int * q)
{
int temp = *p; // 用临时变量 temp 保存 p 指针指向的值
*p = *q; // 将 q 指针指向的值赋给 p 指针指向的位置
*q = temp; // 将 temp 的值赋给 q 指针指向的位置
}
我们通过传入指向两个变量的指针p,q然后使用临时变量temp暂时接受p指针所指的值,然后交换p和q指针所指的值,最后打印出来结果为
3.指针与数组
通过指针打印数组,直接上代码:
#include <stdio.h>
int main(int argc, const char* argv[])
{
char str[] = "abcdefg"; // 定义一个字符数组 str 并初始化为 "abcdefg"
char * p; // 定义一个字符指针 p
p = str; // 让 p 指向字符数组 str 的起始地址
// 计算字符数组的长度(包括末尾的空字符 '\0')
int n = sizeof(str) / sizeof(char);
// 使用 for 循环遍历字符数组,并通过指针 p 逐个打印每个字符
for(int i = 0; i < n; i++)
{
printf("%c ", *p); // 打印当前指针 p 所指向的字符
p++; // 移动指针 p 到下一个字符的位置
}
printf("\n"); // 输出换行符
return 0; // 返回 0,表示程序正常结束
}
后续敬请待下次发布