指针编程:从数组到函数的全面解析

发布时间:2026/10/10 15:20:50
指针编程:从数组到函数的全面解析 目录一、字符指针变量二、数组指针变量2.1数组指针变量的初始化三、函数指针变量3.1函数指针变量的使用四、函数指针数组五、数组指针和指针数组5.1指针数组5.1.1指针数组拟二维数组效果5.2指针数组和数组指针5.2.1 核心区别对比5.2.2 内存布局示例一、字符指针变量字符指针 char*int main() { char ch w; char *pc ch; *pc a; return 0; }int main() { const char* pstr hello; printf(%s\n, pstr); return 0; }const char* pstr hello 本质是把字符串 hello 首字符h的地址放到了pstr中。二、数组指针变量整形指针变量 int * pa 存放的是整形变量的地址能够指向整形数据的指针。浮点型指针变量 float * pa 存放浮点型变量的地址能够指向浮点型数据的指针数组指针变量存放的是数组的地址能够指向数组的指针变量。int * p1[10]; 指针数组int (*p2)[10]; 数组指针变量[ ] 的优先级要高于 * 号的所以必须加上 () 来保证 p 先和 * 结合。2.1数组指针变量的初始化int arr[10] {0};int(*p)[10] arr; p指向包含10 个int元素的数组指针三、函数指针变量函数指针变量存放函数的地址#include stdio.h void test() { printf(hello\n); } int main() { printf(test: %p\n, test); printf(test: %p\n, test); return 0; }函数有地址函数名就是函数的地址可以通过 函数名的方式获得函数的地址。void test() { printf(hello\n); } void (*p1)() test; void (*p2)() test;3.1函数指针变量的使用函数指针调用作加法#include stdio.h int Add(int x, int y) { return xy; } int main() { int (*pf3)(int, int) Add; printf(%d\n, (*pf3)(2, 3)); printf(%d\n, pf3(3, 5)); return 0; }四、函数指针数组函数指针数组把函数的地址存到⼀个数组中元素是函数指针的数组。int (*parr1[3])()parr1 先和 [ ] 结合说明parr1是数组数组的内容是 int (*)() 类型的函数指针。五、数组指针和指针数组5.1指针数组整型数组是存放整型的数组字符数组是存放字符的数组指针数组是存放指针的数组arr有三个元素每个元素的类型是 int* 每个元素是地址可以指向一个区域。5.1.1指针数组拟二维数组效果parr[i] 是访问 parr 数组的元素 parr[i] 找到的数组元素指向了整型一维数组 parr[i] [j] 就是整型一维数组中的元素。#include stdio.h int main() { int arr1[] {1,2,3,4,5}; int arr2[] {2,3,4,5,6}; int arr3[] {3,4,5,6,7}; int* parr[3] {arr1, arr2, arr3}; int i 0; int j 0; for(i 0; i 3; i) { for(j 0; j 5; j) { printf(%d , parr[i][j]); // printf(%d , *(*(parr i) j)); } printf(\n); } return 0; }模拟出二维数组效果本质并非完全是二维数组每一行并非是连续的。5.2指针数组和数组指针5.2.1 核心区别对比对比项指针数组数组指针本质数组元素是指针指针指向数组声明int* arr[10];int (*p)[10];sizeof数组大小 元素个数 × 指针大小指针大小通常4或8字节1操作移动到下一个指针元素移动到下一个完整数组典型用途字符串数组、模拟二维数组指向二维数组的行、函数参数传递5.2.2 内存布局示例指针数组的内存布局int a 1, b 2, c 3; int* arr[3] {a, b, c}; // arr在栈上占用3个指针的空间 // 每个元素存储的是a、b、c变量的地址数组指针的内存布局int arr[3][4] {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; int (*p)[4] arr; // p指向arr[0]即第一行 // p1指向arr[1]即第二行跳过4个int

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询