✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 感谢您的点赞与关注,同时欢迎各位有空来访我的平凡舍 --...-- 文章目录 @[toc] 前言 字符指针 指针数组 数组指针 &数组名 与 数组名 数组指针的使用 数组传参、指针参数 一维数组传参 二维数组传参 一级指针传参 二级指针传参 函数指针 结语 前言...其实很简单,这里str3和str4指向的是一个同一个常量字符串。C/C++会把常量字符串存储到单独的一个内存区域,当指针指向同一个字符串的时候,他们实际会指向同一块内存。...函数指针 什么是函数指针? 数组指针——指向数组的指针就是数组指针 函数指针——指向函数的指针就是函数指针 怎么表示? 前面说到&数组名与数组名的区别,那&函数名与函数名有区别吗?...我们来看一看 结果是一模一样的,对于函数来说,&函数名和函数名是一样的,都是函数的地址 那函数指针有什么用呢? 这里间接通过函数指针调用函数,原来都是直接调用函数。我们今天不是这么用的。
大家好,又见面了,我是你们的朋友全栈君。 在C语言中,指针是一个很重要但是又很容易弄错的概念,也可以说指针就是C语言的灵魂,所以说学好指针对于完全掌握C语言是一个必须的过程。...而在指针中,指针函数、函数指针、指针函数数组、函数指针数组、指向函数指针数组的指针等等概念看着又绕又头疼。本问总结了一下以上一些概念以及用法,并给出例程深化理解。 1....函数指针数组 顾名思义,就是每个元素都是函数指针的数组,直接在函数指针名后面加上数组符号[ ]即可。...C语言函数不可以定义为数组,只能通过函数指针来操作定义函数指针数组。 5....,而void(* )( )表示函数指针,两者结合起来就是指向函数指针数组的指针。
组指针:存放的是数组的地址,能够指向数组的指针变量 二、指针数组和数组指针的区别 数组指针和指针数组的写法 int*parr[10]//指针数组 解释:数组名先和[]结合,说明这是一个数组,数组中有...二、函数指针 什么是函数指针变量呢? 根据前面学习整型指针,数组指针的时候,类比一下,我们不难得出结论: 函数指针变量应该是用来存放函数地址的,未来通过地址能够调用函数的。那么函数是否有地址呢?...同时我们观察发现,函数名和取出来的地址是一样的 函数指针变量的使用 如果我们要将函数的地址存放起来,就得创建函数指针变量咯,函数指针变量的写法其实和数组指针非常类似。...//int arr[5] = {0}; //int (*parr)[5] = &arr;//parr 是数组指针变量 //arr:数组首元素的地址 &arr:数组的地址 //&函数名和函数名都是函数的地址...,是int(*)()类型的函数指针 函数指针数组的实际应用:转移表 计算器的一般实现路径代码: #define _CRT_SECURE_NO_WARNINGS 1 #include
鸽芷咕:个人主页 个人专栏:《C语言进阶篇》《C语言初阶篇》 ⛺️生活的理想,就是为了理想的生活!...文章目录 前言 指针数组 指针数组的定义 ✅ 指针数组的使用 如何访问存放在的指针数组里的数组元素 数组指针 数组指针的定义 &数组名VS数组名 数组指针的使用 数组指针(实例) 全篇总结...数组指针or指针数组是有明显不一样的下面我们就来看看 本期文章收录在《C语言初阶篇》,大家有兴趣可以看看呐! ⛺️ 欢迎铁汁们 ✔️ 点赞 收藏 ⭐留言 !...整形数组 是用来存放整形的数组 指针数组 自然是用来存放指针(地址)的数组 这样比较起来是不是就能快速的理解指针数组的概念! 指针数组的定义 数组我们已经知道整形数组,字符数组。...arr的地址赋值给数组指针变量p //但是我们一般很少这样写代码一般都是在函数里面接收数组时使用 return 0; } 代码结果: 这里我们就可以看到如果接收整个指针数组的地址,使用的指针级别出现问题程序就会崩溃
结构体概述 : 结构体是 多个 变量的集合, 变量的类型可以不同; -- 可进行的操作 : 结构体可以进行 拷贝 赋值操作, 可以作为 函数参数 和 函数返回值; 1....class c1 = {s2, s3}; return c1; } -- 传递结构体指针 : 传递结构体的指针, 访问形式如下; /* * 传入一个结构体指针 * 通过指针访问结构体的方法 :...->name 分析 : 获取 结构体中的 name 字符串的值(注意不是指针|地址); -- *p++->name 分析 : 先获取 name 字符串的值, 再将p自增; 结构体函数示例 : /****...high 和 low : 其中 low 是首元素的 首地址, high 是 尾元素的尾地址, 只有这样 它们的差的 0.5 倍才是准确的中值的首地址; 指针指向数组注意点 : 不要生成非法的指针, 指针不能指向数组之外的元素..., 该指针指向数组中查找到元素的下标*/ while(getword(word, MAXWORD) !
不带形参的main函数一般写成: int main() 或 int main(void) 表示mian函数没有参数,调用mian函数时不需要给出实参。...而main函数有形参的形式: int main( int argc, char** argv) int main( int argc, char *argv[]) 我是这样理解这两种方式,其中第一种方式...**argv是指针的指针,指针指向变量,指针是一个地址,所以*argv是一个地址。...第二种 *argv[]是指针数组,由于[]的优先级比*高,所以argv[]是一个数组,而数组名其实代表的是首地址,还是一个地址。所以这两种方法没有什么区别。...,在本例子中他是一个图片路径,因为第一个参数是操作系统给出的可执行文件名。
数组指针/指针数组 数组指针是: ❝指向数组的指针,它本质上还是一个指针,类比普通指针 ❞ 指针数组是: ❝一个存放指针的数组,本质上是数组,就如经常说的字符数组,整型数组一样 ❞ 2.1 数组的理解...arr[1] => *(&arr +1) 先让内存地址加下标,再通过指针获取到元素 ❞ 2.3 数组指针 数组指针就是指向数组第一个元素的指针,相信认真看了2.1和2.2的你能够很快理解 定义一个数组指针...int a[] = {1, 3, 5, 7}; // 一个数组 int (*p)[4] = &a; // 定义一个指针,指向数组的头元素 通过指针访问第二个数组元素: printf("访问数组的第二个元素...指针「数组」,顾名思义,他是个数组,就如经常说的字符数组,整型数组一样,只不过指针数组的定义方法和存储对象也有亿点点不一样。...定义一个指针数组(以整型为例) int *pArr[10]; // 定义一个指针数组 「要注意与数组指针的定义区别开」 数组指针的定义: int (*arrP)[10]; 一定要注意这个括号,这涉及到了
之后的 数组指针 指向该数组 , int array2[3] = {0}; 然后 , 直接定义数组类型变量 , int (*p)[3] = NULL; 最后 , 将 array2 变量地址赋值给该...数组指针类型 变量 , 指针指向的数据类型为 int[3] 数组类型的变量 array2 ; ArrayPointer p = NULL; p = &array2; 验证上述 定义的数组指针...; } 使用 数组指针 , 打印数组元素内容 : // 使用 数组指针 访问数组中的值 for(i = 0; i < 3; i++) { printf("..., 之后的 数组指针 指向该数组 int array2[3] = {0}; // 然后 , 直接定义数组类型变量 int (*p)[3] = NULL; // 最后..., 将 array2 变量地址赋值给该 数组指针类型 变量 // 指针指向的数据类型为 int[3] 数组类型的变量 array2 p = &array2; // 为数组赋值
① 函数指针 ② 指针函数 ③ 数组指针 ④ 指针数组 还有个找抽的:⑤ 函数指针数组 经翻阅小学五年级语文课本得知,一个短语中的最后部分,是这个短语的中语,其余部分是定语(修饰语)。...也就是说,以上短语相当于: ① 指向函数的指针 ② 返回指针的函数 ③ 指向数组的指针 ④ 放了很多指针的数组 ⑤ 放了很多指向函数的指针的数组 ? 语文课上完了,然鹅,没用!...初学者们的福音到了,以上那些渣渣是这样的: ① 函数指针 p int func(char , double); // 一个普通函数 int (*p)(char, double); // 一个指向以上函数的指针...p = &func // 让 p 指向函数 func ② 指针函数 func char * func(int, float); // 一个返回指针的函数 ③ 数组指针 q int num[10]; /...char* 指针的数组 ⑤ 函数指针数组 fs void func(double, int); // 一个普通函数 void (*fs[3])(double, int); // 一个存放了 3 个指向以上函数的指针的数组
数组指针与函数指针 前言 数组指针和函数指针都是指针类型,但是它们指向不同的数据类型。 数组指针:数组指针指向的是数组类型。 函数指针:函数指针指向的是函数类型。...数组指针和函数指针是C语言中的两种重要指针类型。数组指针指向一个数组,可以用来访问和修改数组中的元素;而函数指针则指向一个函数,可以用来调用该函数。两者在语法和用法上有所不同,需要仔细区分。...C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。...过去我们有一个二维数组的需要传参给一个函数的时候,我们是这样写的: #include void test(int a[3][5], int r, int c) { int i =...函数指针数组 数组是一个存放相同类型数据的存储空间,我们已经学习了指针数组, 比如: int *arr[10]; //数组的每个元素是int* 那要把函数的地址存到一个数组中,那这个数组就叫函数指针数组
typedef 定义一个数组指针类型 , typedef int(*ArrayPointer)[3]; 然后 , 定义一个普通数组 , 之后的 数组指针 指向该数组 , int array2...[3] = {0}; 最后 , 声明一个 数组指针类型 变量 , 将 array2 变量地址赋值给该 数组指针类型 变量 , 指针指向的数据类型为 int[3] 数组类型的变量 array2 ;...(i = 0; i < 3; i++) { array2[i] = i + 1; } 使用 数组指针 , 打印数组元素内容 : // 使用 数组指针 访问数组中的值...// 首先 , 定义 数组指针类型 别名 typedef int(*ArrayPointer)[3]; // 然后 , 定义一个普通数组 , 之后的 数组指针 指向该数组...int array2[3] = {0}; // 最后 , 声明一个 数组指针类型 变量 // 将 array2 变量地址赋值给该 数组指针类型 变量 // 指针指向的数据类型为
指针数组和数组指针是C语言中常用的数据结构,它们可以在处理内存动态分配、多维数组、函数指针等方面提供便利。...虽然指针数组和数组指针的名字十分相似,但是它们是两个截然不同的概念,下面进行详细介绍: 一、指针数组 指针数组: 指针数组是一个数组,其中的每个元素都是指针类型。...指针数组常用于以下情况: 存储不同类型的数据:通过将指针数组的每个元素设置为不同类型的指针,可以存储不同类型的数据。 传递数组到函数:可以通过将指针数组作为参数传递到函数中来访问数组。...= 2, c = 3, d = 4, e = 5; ptrArray[0] = &a; ptrArray[1] = &b; ptrArray[2] = &c; ptrArray[3] = &d...数组指针常用于以下情况: 访问多维数组:可以使用数组指针来访问多维数组中的元素。 动态内存分配:数组指针可以用于动态分配内存。 函数指针:可以使用数组指针来定义函数指针类型。
二、数组元素的指针 1.定义 指针变量既然可以指向变量,同样的,也能指向数组元素,因此,数组元素的指针就是数组元素的地址。...2.运算 由于指针指向的是一个地址,因此数组指针也同样可以进行相关运算;例如指针的加减可以实现指针指向数组上一个或者下一个元素的功能。这边需要说明,数组指针中进行乘法和除法是没有意义的。...四、数组指针作函数参数 下面是几种传参的方式: void test() { int arr[3][5] = {0}; print(arr); } void print(int arr[3][5])...因此我们可以得出指针数组的定义。指针数组:一个数组的元素均为指针类型数据,称为指针数组。...通过一个简单的函数就可以进行输出了。 二、指向指针数据的指针 首先我们可以定义一个指向指针数据的指针变量: char **p; 为了方便我们理解,其实**p也就等于*(*p)。
---- 友情提醒:本文可能是全csdn最详细的指针内容了,希望你能用心读下去 前言 接下来的讲解部分是指针的进阶,包含多种指针以及对应的数组,这部分章节对我们来说很重要,也是c语言中的重点模块儿,重要性不言而喻...(c/c++会把常量字符串储存到单独的一个内存区域中) 当这两个指针指向同一个常量字符串时,实际上就是指向同一块儿地址**(指针就是地址,地址就是指针)** 2.数组指针 2.1数组指针的定义 1.数组指针嘛...函数 代码4 将函数指针数组的地址放到指向函数指针数组的指针当中,**这里的指针是比较难写的,如果直接写不好写的话,我们可以像下面这样,将函数指针数组的数组名替换为(指针)即可 ,这样来写,就不怕我们把这个指针给写错了...,他其实就是方便在当我们调用多个函数时,省去我们重复写调用函数的代码,如果有函数指针数组的话,我们直接访问函数指针数组的元素内容就可以了,然后向我们得到的函数名传相应的参数就可以了 下面给大家做一个功能较完整的函数指针数组的使用吧...回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 我们直接大白话给他翻译成通俗易懂的语言。怎么样就是回调函数呢?
【嵌入式开发】C语言 指针数组 多维数组 2.【嵌入式开发】C语言 命令行参数 函数指针 gdb调试 3.【嵌入式开发】C语言 结构体相关 的 函数 指针 数组 4....【C语言】 C 语言 关键字分析 ( 属性关键字 | 常量关键字 | 结构体关键字 | 联合体关键字 | 枚举关键字 | 命名关键字 | 杂项关键字) 6....【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读) 文章目录...: C语言中没有二维数组改变, 编译器 都按照一维数组来处理, 数组的大小在编译时就确定了 ; 2.二维数组由来 : C 语言中的数组元素可以是任何类型, 即可以是一维数组, 这样就产生了二维数组...数组参数退化为指针参数的意义 ( 1 ) 数组参数退化的相关概念 ( 指针退化成数组 ) 一维数组参数退化为指针 : 1.C语言中的拷贝方式 : C 语言中只会以 传值拷贝 的方式来传递参数 ;
里了,但是,本质是把字符串 abcdef的首字符的地址放到了pstr中 上面代码的意思是把一个常量字符串的首字符 a 的地址存放到指针变量 pstr 中 注意: C/C++会把常量字符串存储到单独的一个内存区域...但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块 1.8 函数指针 顾名思义,函数指针是指向函数的指针, 存放的是函数的地址 &函数名就能够得到函数的地址 函数名也是函数的地址 int...首先,我们先了解一下qsort函数的用法 qsort - C++ Reference (cplusplus.com) 这个函数一共有四个参数,我们能看到,第四个参数是一个函数指针 对四个参数的解释是...数组 - 存放的是函数指针 - 存放的是函数的地址 我们举个例子 这里int (*pfArr[4])(int,int)意思是 pfArr[4]是一个函数指针数组,这个数组有4个元素,每个元素都是一个函数指针...p[4])(int,int) //函数指针数组 3.4 指向函数指针数组的指针 指向函数指针数组的指针是一个指针,指针指向一个数组,数组的元素都是函数指针 我们推一下 对比一下,函数指针数组和指向函数指针数组的指针
前几天在佛科大,惊闻某为同学学习指针学了一年,且未的要领!我当时除了深深吃了一斤之外,瞬间觉得自己的工作是如此的重要和迫切!对于指针这类调皮鬼,今天来聊聊函数指针这个特殊的一员。...C语言中,指针是一类变量,可以有指向int的指针,可以有指向float的指针,可以有指向结构体的指针,还有一类非常重要的:指向函数的指针。...比如有如下函数: void function(int a, char b) { ... ... } 函数是什么?将以上C语言源代码编译,生成汇编文件给你看看什么“函数” look: ?...因此,function就是一个指针,一个指向其本身函数体第一行的指针。...当然,C语言为了让初学者不至于懵圈,发出这样的疑问: “咦!?既然是指针,赋值怎么不需要取址? 取目标怎么不需要解引用?”
C语言什么是指针数组 在C语言中一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针变量。...C语言指向指针数据的指针 //定义一个指向指针数据的指针变量: char **point; point的前面有两个*号。...C语言指针数组作main函数的参数 main函数的第一行一般写成 int main() 或 int main(void) 括号中是空的或void,表示main函数没有参数,调用main函数时不必给出实参...命令行的一般形式 命令名 参数1 参数2……参数n C语言指向指针的指针 #include int main() { int number =100; int *p1...100道C语言源码案例请去公众号:C语言入门到精通
对于数组元素的使用,采用的是数组名加下标的方式。 比如有数组 int a[10]; 里面10个元素分别是 a[0]、a[1]、a[2]......a[9]。...引用数组元素,还有另外两种方式。 首先,我们要知道数组名a代表的含义,它表示的是首地址,数组第一个元素a[0]的地址。...数组在内存空间位置是固定的,地址不变,这也就是为什么不能给数组名a赋值或者改变它的值。 那么a+1是什么意思呢?很多人误以为,那就是首地址加一呗。a+1表示的是数组里面第二个元素的地址。...a+i 等价于 &a[i] *(a+i) 等价于 a[i] 第二种方式就是直接使用指针来引用数组元素。...定义指针 int *p; 使用p=a;或者p=&a[0]让指针指向数组第一个元素a[0],那么通过指针p的移动,如p++等也可以遍历数组所有元素。
C语言数组元素的指针 指针变量既可以指向变量,也可以指向数组元素,所谓数组元素的指针就是数组元素的地址。 引用数组元素可以用下标法,也可以用指针法,即通过指向数组元素的指针找到所需的元素。...在C语言中,数组名代表数组中首元素的地址,使用指针法能使目标程序质量高,因为其占内存少,运行速度快。 C语言在引用数组元素时指针的运算 在一定条件下允许对指针进行加和减的运算。...C语言用数组名作函数参数 C语言调用函数时虚实结合的方法都是采用“值传递”方式,当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时。...C语言通过指针引用多维数组 1、多维数组元素的地址 性质与二维数组差不多,但需要注意的是,多维数组由于分配内存情况不同,所显示的地址可能是不同的。...2、指向多维数组元素的指针变量 指向数组元素的指针变量。 指向由m个元素组成的一维数组的指针变量。 3、用指向数组的指针作函数参数 一维数组名可以作为函数参数,多维数组名也可以作函数参数。
领取专属 10元无门槛券
手把手带您无忧上云