当前位置: 首页 > news >正文

农产品网站建设及优化项目做百度推广多少钱

农产品网站建设及优化项目,做百度推广多少钱,网站底部分享怎么做,宁波好的seo外包公司前言 指针可以说是C语言基础语法中最难的理解的知识之一,很多新手(包括我)刚接触指针时都觉得很难。在我之前发布的笔记中都穿插运用了指针,但是我一直没有专门出一期指针的笔记,这是因为我确实还有些细节至今还不太清…

前言

       指针可以说是C语言基础语法中最难的理解的知识之一,很多新手(包括我)刚接触指针时都觉得很难。在我之前发布的笔记中都穿插运用了指针,但是我一直没有专门出一期指针的笔记,这是因为我确实还有些细节至今还不太清楚。本篇将分享我对指针的理解,欢迎各位大佬批评指正。


一、指针是什么?       

       我们平常所说的指针其实就是指针变量是一种用来存放地址的变量。地址就是某一变量或函数的地址,当我们需要调用某一变量或函数时,可以通过该变量或函数的地址找到并调用。因此,当指针变量中存放了一个变量的地址时,我们就可以通过该指针找到其所指向的变量。

       就像在现实当中,我们知道一个朋友家的地址,才能找到这个朋友的家。

  在32位系统上,所有指针变量的大小均为4字节。在64位系统上为8字节。

二、常见的指针类型 

       常见指针类型可以和常见的数据类型一一对应,例如整型指针对应整型,浮点型指针对应浮点型。需要注意的是,结构体变量的数据类型为“struct + 结构体名”,定义结构体指针时需要将类型写全。

int* pi = NULL; //整型指针
char* pch = NULL; //字符型指针
float* pf = NULL; //単精度浮点型指针
double* plf = NULL; //双精度浮点型指针
sturct stru* ps = NULL; //结构体指针
FILE* pF = NULL;//文件指针
void (*test)() ptest = NULL; //函数指针

       上图即各种常见的指针类型的定义方式,例如 " pi " 为 " int* " 类型的指针(变量pi的数据类型为" int* "),即整型指针、" ps " 为 " struct stru* " 类型的指针,即该结构体类型的指针,而 " ptest " 为 " void (*)() " 类型的函数指针。

       图中的所有的指针均被初始化为NULL。NULL为空指针,其数值为0。

三、野指针 

       野指针就是指向未知地址的指针。

       当我们定义了一个指针变量后,如果不直接初始化为所需存放的地址,则应初始化为空指针NULL。否则该指针将会成为野指针。

       野指针有什么危害呢?当我们创建一个变量时,编译器会向内存申请一块空间来存放该变量,这块空间为合法空间,我们使用指针访问该空间即为合法访问。而野指针指向的随机地址可能并非合法空间,当我们使用野指针时就会产生非法访问。

       因此,当我们创建一个指针变量后,如果不要立即使用,则最好将其初始化为空指针,以避免造成非法访问。

四、指针的基本用法 

1. 指针的赋值和解引用

       当我们创建一个指针变量后,我们应该如何使用该指针变量来存储一个对应数据类型的数据呢?又该如何使用该指针来找到其所指向的数据呢?这里以整型指针为例。我们来看看以下代码,printf函数的打印值为多少呢?

int main()
{int a = 10;int* pa = &a;int b = *pa;printf("%d\n",b);return 0;
}

首先介绍一下上方代码出现的两种操作符:

1、取地址操作符 "&" :用来取出变量的地址,例如&a的值就是a的地址。

2、解引用操作符 " * " :用来解引用指针变量,使用指针所指向的数据,例如*pa的值即为a的值。这里需要注意区分 " int* " 中的 * 和解引用操作符 " * ",前者" int* "为一个整体,代表一种数据类型,而后者为一种操作符。

我们来逐条分析上方代码。

       第一行,定义变量a并初始化为10。第二行,定义指针变量pa,并初始化为a的地址。第三行,定义变量b,并初始化为pa所指向的变量,即b被初始化为10。因此printf函数打印的值为10。

2. 函数传参

       函数传参分为传值调用传址调用两种。传值调用指直接将变量传给函数,而传址调用则是将变量的地址传给函数。这里我通过一个简单的函数来介绍这两种传参方式的区别。

2.1 传值调用

       如图为一段传值调用的代码,我们将x初始化为0,并将x,10作为参数x,y传入test函数,在test函数中,x被赋值为y,那么为什么最后printf函数打印出来的x值为0呢?

       首先我们要明白一点,main函数中的x与test函数中的x不是同一个变量,因此test函数中的x被赋值为10并不会影响main函数中的x的值,main函数中的x也就还是0。

       如果我们希望使用传值调用实现上述逻辑,应对代码进行如下修改。

        通过函数返回值的方式对main函数中的x进行赋值即可。

2.2 传址调用

        这段代码与传值调用的第一段代码类似,将test函数参数中的(int)x换成了(int*)px。在test函数中,通过解引用px的方式找到x,并进行赋值操作,这样操作又可以实现上述逻辑,这是为什么呢?

       首先我们要搞清楚一点,每个变量被创建出来时都会占用一部分内存空间,在该变量被销毁之前,其占用的空间是不变的。当我们拥有该变量的地址时,我们可以在它未被销毁的任何位置通过其地址找到该变量。

       在上面这段代码中,main函数中的x在main函数结束时才被销毁,那么在main函数调用test函数时,x并未被销毁,因此在test函数中,我们可以通过x的地址px找到并给x赋值。

2.3 用法总结 

          传值调用和传址调用不分绝对的好坏,需要根据实际情况选用不同的方式。

当不需要改变参数值,只需要调用参数参与函数运算时,多使用传值调用

当需要改变参数值时,多使用传址调用

五、指针运算 

       指针运算的知识多用于与数组结合的问题。

1. 指针 +(-) 整数

       这段代码分别打印了p-1、p和p+1(地址的格式符为%p,打印值为十六进制)。我们可以发现,指针通过加减整数得到的值仍然为指针

       在此图中,指针+1,地址+4。这是因为图中的指针为整型指针(int*),一个整型的大小为4个字节,指针+1的含义是跳过一个整型,也就是跳过4个字节,即地址+4。同理,如果是一个字符指针(char*)+1,则跳过一个字节,地址+1;如果是双精度浮点型指针(double*)+1,则跳过八个字节,地址+8。

2. 指针 - 指针

       根据上述指针+(-)整数的知识,我们可以推出,指针-指针的值应该为整数。

       这里我通过字符指针为例(字符指针每次+1跳过一个字节,更加直观)。上图中,pa为低地址,pb为高地址,差值为32。pa-pb为低地址-高地址,结果为负的差值,即-32,同理,pb-pa则为32。

 六、二级指针

       我们知道,一个整型指针(int*)可以存储一个整型(int)变量的地址。那么作为一个指针变量,我们同样可以使用一个指针来存储它的地址。

        我们来逐一分析上方代码。首先pa为指向a的指针,它的类型为整型指针(int*),而ppa为指向pa的指针,它的类型为整型指针指针(int**)。这就是所谓的二级指针。我们同样可以通过二级指针找到最终的变量值。首先进行一次解引用找到其所指向的一级指针,再次解引用即可得到变量值,如图中" **ppa "。

        当然,有二级指针,同样也有三级,四级甚至更高级数的指针,它们的底层逻辑与二级指针相同,这里就不过多解释了。


结束语

       以上就是有关于指针的基础内容了,希望能够帮助到正在学习C语言的同学们。如果文章内容有错误或知识点有遗漏,望各位大佬批评或补充在评论区或私信。

http://www.hengruixuexiao.com/news/19084.html

相关文章:

  • 深圳做网站做得比较好的公司互联网营销公司
  • 不让网站在手机怎么做2022年小学生新闻摘抄十条
  • 网页设计素材乒乓球图片怎么优化关键词
  • 学做日本菜的网站好2023b站免费推广入口游戏
  • 租好服务器咋做网站呢三只松鼠网络营销案例分析
  • 企业网站建设官网东莞网站建设公司排名
  • 做3d教学网站网站服务器搭建
  • 给个靠谱的免费网站名字爱站网ip反查域名
  • 建设公司招聘关键词优化包含
  • 唐山cms模板建站西安seo代理
  • 如何做快递api接口网站如何做网站推广及优化
  • dns解析失败登录不了网站前端seo怎么优化
  • 关于推进公司网站开发的请示网站源码
  • 做视频最全的网站百度竞价开户费用
  • 做自己任务的网站新浪体育nba
  • 怎么添加网站权重石家庄网站优化
  • 移动网站建设服务商小学生简短小新闻
  • 755权限 wordpress中山seo推广优化
  • 电脑编程培训seo推广编辑
  • 唐山做网站哪家公司好西安做网站的网络公司
  • 不会编程怎么做网站seo关键词选取工具
  • 网站收藏的链接怎么做的萌新seo
  • 成都市建设厅网站扬州百度推广公司
  • 新疆的小网站seo优化实训报告
  • 网站是怎么优化推广的整合营销传播方案案例
  • 漳州模板网站建设教育培训机构加盟
  • 做网站挣钱吗网络营销与直播电商
  • 手机笑话网站模板如何做免费网络推广
  • 怎么做阿里巴巴网站百度自然排名优化
  • 网站seo怎样做营销推广