【嵌入式笔记】【C语言】指针

指针的声明:

声明指针时,需要指定指针指向的数据类型,以及指针的名称。基本语法如下:

数据类型 *指针变量名;

例如,声明一个指向整数的指针:

int *p;

指针的初始化:

指针可以被初始化为一个地址,通常是另一个变量的地址。使用&运算符获取变量的地址:

int var = 10;
int *p = &var; // p 现在指向 var 的地址

指针的解引用:

使用*运算符可以访问指针指向的值,这个过程称为解引用:

int value = *p; // value 现在是 10,即 var 的值

指针的算术操作:

指针可以进行算术操作,如增加或减少,步长为指针指向的数据类型的大小。这在数组操作中非常常见:

int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // p 指向 arr 的第一个元素
p++; // 现在 p 指向 arr 的第二个元素

指针和数组:

数组名本身就是一个指向数组第一个元素的指针。因此,arr 和 &arr[0] 是等价的:

int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // 等同于 p = &arr[0];

指针的指针:

可以创建指向指针的指针,这在某些情况下非常有用,例如动态内存分配或实现数据结构:

int var = 5;
int *p1 = &var;
int **p2 = &p1;

空指针:

空指针(NULL pointer)是一个指针,它不指向任何地址。在C语言中,空指针通常用NULL表示:

int *p = NULL;

指针和函数:

指针可以作为函数的参数传递,也可以作为函数的返回值。这使得函数能够操作内存地址和动态数据结构。

指针类型转换:

指针可以转换为其他类型的指针,但必须确保这种转换在上下文中是有意义的:

void *generic_ptr = p; // 将 int* 转换为 void*
int *specific_ptr = (int*)generic_ptr; // 将 void* 转换回 int*

指针数组:

指针数组是一个数组,其元素都是指针:

int *array_of_pointers[10];

指针的安全性:

不正确的指针操作可能导致程序崩溃或安全漏洞。因此,在使用指针时,需要特别注意空指针检查、缓冲区溢出等问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaoYuanSama

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值