c语言学习-指针
指针变量
指针变量是存放地址的变量
指针变量需要区分类型,跨度不一样
int *p
// 这里*是标识符,告诉系统这是一个指针变量,用来保存地址
printf("%d\n", *p)
// 这里*是取值运算符,把内存地址p里的数据取出来
数组的首地址就是数组首个元素的地址
数组名就是数组的首地址
int arr[3] = {1, 2, 3};
int *p;// 8个字节表示一个地址
p = arr;
p = &arr[0];
p+1
,偏移一个类型的字节数
二维数组
父子数组\
int a[3][4] = {{1,2,3,4},{5,2,3,4},{1,2,6,4}};
a
是二维数组名,是父数组地址
a[0]
是一维数组的名,是子数组的地址
a[0]+1 = *(a+0)+1
数组指针
用指针表示数组
一维数组
int a[3] = {1,2,3};
int *p;
p = a;
二维数组
int arr[3][4] = {{1,2,3,4},{5,2,3,4},{1,2,6,4}};
// 数组指针
int (*p)[4];
p = arr;
函数指针
如果在程序中定义了一个函数,在编译时,编译系统为这段函数分配了一段地址空间,这段地址空间的起始地址(入口地址)称为这个函数的指针
函数名就是地址
定义一个函数指针变量
void (*p)(int a, int b)
{
}
应用演示
void pri(){
printf("1");
}
int main(){
void (*p)();// 定义一个函数指针变量
p = pri;// 指向函数
pri();
(*p)();// 调用
return 0;
}
指针数组
一个数组内元素都是指针类型
int *p[4];
二级指针
改指针变量的定义时用到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人