-
c指针是什么?:指针是个变量,用来存放单元(一个单元的大小是一个字节)的地址,所以也说指针就是地址。
-
指针类型:决定了指针进行解引用操作的时候,能访问空间的大小
-
解引用操作:如 *p = 0;
如:int* p;*p能够访问4个字节
char* p;*p能够访问1个字节
double* p;*p能够访问8个字节
指针(+,-)
- 指针类型决定了指针走一步走多远(指针的步长)
如下:int类型能访问4个字节(跳过一个int字符,后同)所以增加4,而char类型能访问1个字节所以增加1
示例:
#include<stdio.h>
int main()
{
int a = 0X11223344;
int* pa = &a;
printf("%p\n", pa);
printf("%p\n", pa+1);
printf("========\n");
char* pc = &a;
printf("%p\n", pc);
printf("%p\n", pc+1);
return 0;
}
示例结果:
006FF764
006FF768
========
006FF764
006FF765
指针初始化(NULL)
#include<stdio.h>
int main()
{
int* p = NULL;//NULL-用来初始化指针
}
指针-指针(相减)
- 指针-指针:得到的是指针之间的元素个数
- 指针相减两个指针指向的是同一块空间
例:
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", &arr[9] - &arr[0]);
return 0;
}
结果:9
二级指针
- 用来存放一级指针变量的地址
指针数组
- 指针数组:存放指针的数组(如:int* arr[3] = {&a,&b,&c}😉
示例;
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
int c = 30;
int* arr[3] = { &a,&b,&c };//通过指针数组来存放a,b,c的地址
int i;
for (i = 0; i < 3; i++)
{
printf("%p\t", arr[i]);
}
printf("\n");
for (i = 0; i < 3; i++)
{
printf("%d\t", *(arr[i]));//通过解引用操作找到a,b,c的值并输出
}
return 0;
}
示例结果:
00FDFB88 00FDFB7C 00FDFB70
10 20 30
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】