96SEO 2026-02-20 05:42 13
world;//这里是把一个字符串放到pstr指针变量里了吗printf(%s\n,

这里str3和str4指向的是同一个常量字符串。
C/C会把常量字符串存储到单独的一个内存区域当几个指针指向同一个字符串的时候他们实际会指向同一块内存。
但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。
所以str1和str2不同str3和str4不同。
//arr1数组有10个元素且每个元素都为int*类型char*
//arr2数组有4个元素且每个元素都为char*类型char**
//解释p先和*结合说明p是一个指针变量然后指着指向的是一个大小为10个整型的数组。
//这里要注意[]的优先级要高于*号的所以必须加上来保证p先和*结合。
根据上面的代码我们发现其实arr和arr虽然值是一样的但是意义应该不一样的。
arr;//把数组arr的地址赋值给数组指针变量p//但是我们一般很少这样写代码return
5);//数组名arr表示首元素的地址//但是二维数组的首元素是二维数组的第一行//所以这里传递的arr其实相当于第一行的地址是一维数组的地址//可以数组指针来接收printf(-----------------\n);print_arr2(arr,
这里有非常重要的一点我们已经知道数组名就是数组首元素的地址(有两个例外那么对于二
如图所示我们给arr1之后它的地址跳过了一个一维数组的大小。
所以我们可以通俗的把二维
数组arr理解为arr数组包含3个元素每个元素都是元素个数为5、元素类型为int类型的数组。
arr[3]//首先arr是一个数组且包含3个元素所以先和[3]结合int
//arr是一个数组包含5个元素且每个元素的类型是int//指针数组
//parr1是一个数组包含10个元素且每个元素的类型是int*//数组指针
//parr2是一个指针指向的是一个数组数组包含10个元素且每个元素的类型是int//数组指针数组
//parr3是一个数组包含10个元素且每个元素的类型是数组指针
//数组指针指向的是一个数组包含5个元素且每个元素的类型是int
我们调用test函数时都将数组名传递过去而数组名又是首地址当然可以用一个指针变量来接收。
如果我们要将二维数组arr传递给test函数那么test函数又该如何如何设计呢
因为对一个二维数组可以不知道有多少行但是必须知道一行多少元素。
原因就是二维数组的数组名就是首元素地址。
而其实二维数组的每个元素又是一个数组。
所以
sizeof(arr[0]);//一级指针p传给函数print(p,
通过前面的二级指针与二维数组的关系分析一下当函数的参数为二级指针时可以接收什么参
arr[10];test(pc);test(ppc);test(arr);//Ok?return
之前学到变量名可以得到变量的地址数组名可以取出数组的地址其实是数组首元素的地址。
那么当我们第一次听到函数指针这个概念时有没有首先想到函数也会有地址吗怎么得到函数的地址难道函数名就可以得到函数的地址吗
我们发现不仅函数名可以得到函数的地址就连函数名本身也是函数的地址。
//下面pfun1和pfun2哪个有能力存放test函数的地址
pfun1可以存放。
pfun1先和*结合说明pfun1是指针指针指向的是一个函数指向的函数无参
b);//pfun3先和*结合说明pfun3是一个指针指向一个函数//函数有两个参数参数的类型都是int函数的返回值是int类型char*
(*parr)[10]);//pfun4先和*结合说明pfun4是一个指针指向一个函数//函数有两个参数参数的类型一个是int*,一个是数组指针函数的返回值是char*类型
(*pf)(2,3);//*pf相当于*AddAdd(仅助于理解这样符合语法理解而已)//其实(*pf)中的*只是一个号摆设加多少个*都一样(*****pf)也照样可以使用函数//但是加上了*号必须要加括号*pf//函数名和函数名都是函数的地址int
那要把函数的地址存到一个数组中那这个数组就叫函数指针数组那函数指针的数组如何定义呢
//首先函数指针数组是数组parr[];//数组的每个元素是函数指针,以无参函数且无返回值的函数为例void
例如我们现在要实现一个计算器包含加减乘除四种功能。
我们可以将这四种功能分别用四个函数来实现。
然后将四个函数对应的函数指针保存到一个函数指针数组里。
当我们运行计算器的程序时可以根据选择不同功能的选项来找到函数指针数组不同下标所对应的不同函数进行运算。
(input){printf(*************************\n);printf(
\n);printf(*************************\n);printf(请选择);scanf(%d,
y);}elseprintf(输入有误\n);printf(ret
指针指向一个数组数组的每个元素都是函数指针。
那么该如何定义一个指向函数指针数组的指针呢
test;//指向函数指针数组pfunArr的指针ppfunArrvoid
//指向函数指针数组pfunArr的指针ppfunArrvoid
pfunArr;//首先我们看到*与ppfunArr结合//所以ppfunArr是一个指针我们将*ppfunArr记作avoid
//说明数组的元素类型是函数指针//总结ppfunArr是一个指针指向一个数组数组的每个元素都是函数指针
回调函数就是一个通过函数指针调用的函数。
如果你把函数的指针地址作为参数传递给另一个
函数当这个指针被用来调用其所指向的函数时我们就说这是回调函数。
回调函数不是由该函数
的实现方直接调用而是在特定的事件或条件发生时由另外的一方调用的用于对该事件或条件进
{printf(*******************************\n);printf(******
*****\n);printf(*******************************\n);
0:printf(退出计算器\n);break;default:printf(选择错误\n);break;}}
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback