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

建一个网站需要网站程序吗自学做蛋糕的网站

建一个网站需要网站程序吗,自学做蛋糕的网站,网站内容作弊的形式,如何给网站加引导页目录 一.内存和地址  1.初识指针 2.如何理解编址 二. 指针变量 三.指针的解引用操作符 1.指针变量的大小 四.指针变量类型的意义 五.指针的运算 1.指针加减整数 2.指针减指针 3.野指针 3.1指针未初始化 3.2指针越界访问 3.3指针指向的空间被提前释放 3.4如何规…目录 一.内存和地址  1.初识指针 2.如何理解编址 二. 指针变量 三.指针的解引用操作符 1.指针变量的大小 四.指针变量类型的意义 五.指针的运算 1.指针加减整数 2.指针减指针 3.野指针 3.1指针未初始化 3.2指针越界访问 3.3指针指向的空间被提前释放 3.4如何规避野指针 六.void* 指针和const修饰指针 6.1void 6.2const 七.传值调用和传址调用 八.指针比较和二级指针 8.1指针比较 8.2二级指针 九.字符指针 十.指针数组 10.1指针数组模拟⼆维数组 十一.数组指针 11.1定义 11.2再次讨论数组名 11.3⼆维数组传参的本质 十二.函数指针 12.1函数指针定义 12.2函数指针变量的使用 12.3怪题 12.4回调函数 十三.函数指针数组 十四.指向函数指针数组的指 十五.qsort的实现 一.内存和地址 1.初识指针 在学习指针之前我们先要明白指针到底是什么指针就是用来访问内存的每一个单位内存都会占一个字节也就是八个比特位每一个内存单号有一个编号就是地址这样可以让CPU快速地找到他我们可以把内存比做成房子内存单号就是每一个住户那么地址也就是你的门牌号了。所以我们可以理解为内存单元的编号 地址 指针。在C语言中地址的新名字就可以把它看作成指针。 2.如何理解编址 CPU访问内存中的某个字节空间必须知道这个字节空间在内存的什么位置而因为内存中字节 很多所以需要给内存进行编址,那么到底是如何编址的呢 首先必须理解计算机内是有很多硬件单元这些硬件单元他们是相互工作的他们会进行数据传递相互的,我们可以来看一下这个图片图片中一共有三个线地址总线数据总线和控制总线。比如说我要从内存中读取一个信息这个读的指令就是通过控制总线内存向CPU传递的然后CPU通过地址总线向找到内存所开辟的空间然后内存再用数据总线传给CPU。不过我们今天只关心组线叫做地址总线。其实所谓硬件编制还跟你是几位机器有关如果你是32位机器那么你就有32位地址线64位机器则64位地址总线一根机器含有两个态0.1所以说32根地址线就可以表示2的32次方含义每种含义都可以表示一个地址. 二. 指针变量 所以说指针到底是什么呢他就是地址,那么指针变量他就是存放指针的变量比如说整形变量int a4;它可以用来存放一个整型反之指针变量也是可以用来存放指针也就是地址。我们先来看一个最简单的指针变量。 这就是最简单的一个指针的创建然后我们把它拆分开来看就可以了。注意指针变量是用来存放地址的也就是存放变量a的 所以是指针他也是分类型的如果有⼀个char类型的变量chch的地址要放在char*的指针变量种去。 三.指针的解引用操作符 那么这个存起来的地址到底有什么用呢肯定我们将地址保存起来未来是要使用的那怎么使用呢 在现实生活中我们使用地址要找到⼀个房间在房间里可以拿去或者存放物品。 C语言中其实也是⼀样的我们只要拿到了地址指针就可以通过地址指针找到地址指针 指向的对象这里必须学习⼀个操作符叫解引用操作符(*)。 *pa 的意思就是通过pa中存放的地址找到指向的空间 *pa其实就是a变量了所以*pa 0这个操作符是把a改成了0.其实可以这样看*可以与操作抵消。因为paa所以*pa*aa。 1.指针变量的大小 所以说指针变量的大小到底是什么呢我们可以这样来推理指针变量是用来存放地址的那么地址是怎么产生的呢地址肯定是由地址线产生的以32位机器为模板32位机器就是32根地址线就是32个比特位那么32个比特位置四个字节所以说指针变量大小就是地址的大小那么地址大小就和机器的这个位数是有关系的你是64位那你就是八个字节注意类型是无关的。 四.指针变量类型的意义 现在有一个令人疑惑的问题就是这个指针变量它的存在到底有什么意义指针变量的大小和类型无关只要是指针变量在同一个平台下大小都是⼀样的为什么还要有各 种各样的指针类型呢我一个指针变量让他有这么多类型是干什么的或者是他到底有什么用 调试我们可以看到代码1会将n的4个字节全部改为0但是代码2只是将n的第⼀个字节改为0。所以说指针类型决定了指针进行节引用操作的时候能够访问空间的大小。 五.指针的运算 1.指针加减整数 用数组来举例子因为数组在内存中是连续存放的只到第一个元素的地址就能找到后面的所有所以说数组的打印也可以用指针加减整数来去实现。 注意这里有一个重要的思想*(pi)其实就等于arr[i],又因为parr所以arr[i]p[i]   *(pi)p[i] 只是一个很重要的思想很多题目都会用到。 2.指针减指针 这里就是运用了指针减指针注意不同类型的指针变量是不可以相减的其实相同类型的指针相减可以看作这两个数组下标之间包含了几个元素一般都是用大减小。 3.野指针 概念 野指针就是指针指向的位置是不可知的随机的、不正确的、没有明确限制的。野指针是非常危险的就比如说野狗如果没有人管的话你怕不怕。所以说常见的野指针类型我们是必须要知道的. 3.1指针未初始化 局部变量指针未初始化默认为随机值,不知道初始化什么的时候我们可以把它定做成一个空指针。 3.2指针越界访问 当指针指向的范围超出数组arr的范围时p就是野指针。 3.3指针指向的空间被提前释放 因为出了test函数结束的时候a的空间就会销毁所以说访问的空间不再是当前程序的。所以地址找不到a就会形成野指针。 3.4如何规避野指针 1.如果不知道指针应该指向哪⾥可以给指针赋值NULL. 2.⼀个程序向内存申请了哪些空间通过指针也就只能访问哪些空间不能超出范围访问超出了就是越界访问。 3.避免返回局部变量的地址 六.void* 指针和const修饰指针 6.1void 在指针类型中有⼀种特殊的类型是 void* 类型的泛型指针这种类型的指针可以用来接受任意类型地址。但是也有局限性void* 类型的指针不能直接进行指针的-整数和解引用的运算。 6.2const 代表他有常属性是无法修改的他修饰指针变量时分为在指针变量的左侧和在指针变量的右侧这两种情况。 const在修饰指针变量的时候放在*右边const限制的是指针变量本身不能再指向别的变量但是可以通过指针变量修改指向的内容。 放在右边的时候限制的是指针指向的内容不能通过指针来修改指向的内容可以修改指针变量本身的只也就是修改指针变量的指向。 七.传值调用和传址调用 存在传值调用和传址调用形式也就是在有些问题中非用指针不可所以我们才会来学习指针。比如说写一个函数交换两个整型变量的值。 void Swap1(int x, int y) {     int tmp x;     x y;     y tmp; }   当Swap1函数调用结束后回到main函数a和b的没法交换。Swap1函数在使用的时候是把变量本身直接传递给了函数这种调用函数的方式我们之前在函数的时候就知道了这种就叫传值调用。 void Swap2(int* px, int* py) {     int tmp 0;     tmp *px;     *px *py;     *py tmp; } 我们可以看到实现成Swap2的方式顺利完成了任务这里调用Swap2函数的时候是将变量的地址传递给了函数这种函数调用方式叫传址调用。 所以未来函数中只是需要主调函数中的变量值来实现计就需要传值调用 如果函数内部要修改 主调函数中的变量的值就需要传址调用  八.指针比较和二级指针 8.1指针比较 注意:C语言语法规定只允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。 8.2二级指针 指针变量也是变量是变量就地址那么指针变量的地址存放在哪儿呢其实二级指针就是用来存放指针变量的地址的。所以说三级指针四级指针也很容易解释了三级指针就是存放二级指针地址的四级指针就是存放三级指针地址的。 总之还可以这么理解 九.字符指针 在指针的类型中我们知道一种指针类型叫做字符指针char*,我们知道他的使用方式就可以了。 这里是把一个字符串全部放进去了还是只放了首字母呢?注意他是一个常量字符串答案是他放的是首字母把常量字符串的首字母放到了变量中。 十.指针数组 指针数组首先他是一个数组是用来存指针的后面还会出现数组指针函数指针函数指针数组那这些东西该如何去判断呢我们可以这样去看找主语比如说好大儿好大儿他是儿子我们只要看后面的那个主语是谁就可以判断他是谁了。 10.1指针数组模拟⼆维数组 parr[i]是访问parr数组的元素parr[i]找到的数组元素指向了整型⼀维数组parr[i][j]就是整型⼀维数 组中的元素。注意这里的parr[i][j]可以写成*parr[i]j**pij。由直接的思想可以得出。 十一.数组指针 11.1定义 整形指针是用来存放整形地址的指针字符指针是用来存放字符地址的指针所以说数组指针就是用来存放数组地址的指针。 int (p指向的数组的元素类型)(*p1)变量名[10] (指向数组的元素个数)  arr          11.2再次讨论数组名 数组名通常表示的都是首元素的地址但是有两个意外1.sizeof数组名这里数组名表示整个数组计算的是整个数组大小。2.数组名这里的数组名表示的依然是整个数字所以取地址取出的是整个数字的地址。注意:数组传参的本质是首元素的地址所以形参访问的数组和实参的数组是同一个数组。 11.3⼆维数组传参的本质 有了数组指针的理解我们就能够讲⼀下⼆维数组传参的本质了。二维数组传参本质上也是传递了地址传递的是第一行这个一维数组的地址。前面也讲过怎么实现二维数组这里就不展示代码了主要还是讲解一个传递参数方式我们用函数来打印二位数组的话肯定就需要传递参数。有两种传参的形式 1.void test(int (*p)[5], int r, int c) 2.void test(int a[3][5], int r, int c) 为什么这样可以呢因为二维数组的首元素是他第一行第一行的地址就是一个意位数组的地址。所以说我需要他的一个首元素那么首元素就很好说了我要么就直接打印他的数组名要么就用数组指针所以就会有这两种方法。所以说⼆维数组传参形参的部分可以写成数组也可以写成指针形式。 十二.函数指针 12.1函数指针定义 就是指向函数的一个指针对于函数来说取地址函数名和函数名都是函数的地址。他的定义方法是返回类型 p 参数。 定义   int           (*pf3)     (int x, int y) 12.2函数指针变量的使用 可以直接通过指针来进入函数为什么两种写法都可以因为前面讲过了对于函数来说取地址函数名和函数名都是函数的地址。 12.3怪题 1          (*       (void    (*) ()    )   0)   ()   ;是什么意思 题目来自于《c语言陷阱与缺陷》这句代码表达了什么意思直接看的话是有点复杂所以我们把他拆分下来先看里面的void* 这是一个函数指针类型拿出去还剩一个*0这是一个指针变量表示0处的地址所以 以上代码是一次函数的调用调用的是0作为地址处的函数把0强制类型转化为一个没有参数返回类型是void的函数地址在调用0地址处的这个函数。 2            void         (*signal    (int , void   (*)  (int)  ))   (int) 比较第一题要更加复杂了我们还是可以拆分来看先看里面的signalintvoid*int这是一个函数指针类型拿去后还剩一个void*int这也是一个函数指针类型 以上代码是一次函数的声明声明的signal函数的第一个数参数的类型是int第二个参数的类型是函数指针该指针指向的函数参数是int返回类型是voidsignal函数的返回类型也是一个函数指针的函数该指针指向的函数参数是int返回类型是void。 12.4回调函数 就是一个通过函数指针调用的函数如果你把函数指针地址作为参数传给了另一个函数当这个指针被用来调用其所指向的函数的时候就叫做回调函数。 十三.函数指针数组 数组是一个存放相同类型数据的存储空间那么如果我要把函数的地址存到一个数组中这些数字该如何定义呢这里就要用到函数指针数组了首先他肯定是一个数组我们用函数指针的结构再去套上数组就行了。 int (*arr[4]) (int,int) {add,sub,mul,div}; 运用了就是可以用它来定义一个计算机把他的计算机方法的函数全部定义在这个数组里 十四.指向函数指针数组的指针 因为我的能力也有限在此只能补充一个定义首先他肯定是指针然后他是指向函数指针数组的 int (**arr[4]) (int,int)arr 十五.qsort的实现 以前写过一篇就直接放在这里了用c语言自己实现qsort和冒泡排序-CSDN博客 完
http://www.zqtcl.cn/news/887248/

相关文章:

  • 网站的服务器在哪里怎么建设网站啊
  • 山东做网站三五网站备案怎样提交到管局
  • 自己如何做网站教程中山企业网站推广公司
  • 网站每年费用本地同城服务平台
  • 暗网网站有那些青岛网站设计公司推荐
  • 营业执照咋做网等网站遂宁网站建设公司哪家好
  • 湖南平台网站建设找哪家重庆网站建设营销
  • wordpress搭建企业网站小型网络架构
  • 淘宝联盟链接的网站怎么做培训网站排名
  • 上海高端网站建设定制大连开发区邮编
  • 手机网站公司免费crm软件下载
  • 家居企业网站建设平台周口seo
  • 扁平化网站建设公司广告推广方案
  • 高端企业网站 程序北京做网站费用
  • net做网站遇到的问题搜索引擎优化方法
  • 专业的设计网站有哪些网站数据库做好了 怎么做网页
  • 鄂州网站建设公司网站制作过程教程
  • 网站建设课程小结二建证考试需要什么条件
  • 比较好的商城网站设计品牌策划案
  • 自适应科技公司网站模板做网站的公司深
  • 网站怎么吸引流量用淘宝做公司网站
  • asp做的网站后台怎么进去老河口城乡建设局网站
  • 中铁建设集团有限公司官方网站wordpress质感
  • 那个网站点击率高pc网站自动生成app
  • 东莞营销型网站建站淘金企业网站建设
  • 怎么用模板做网站手机python编程软件
  • 做视频网站都需要什么软件下载广东网站建设哪家专业
  • 开淘宝的店铺网站怎么做网页设计需要学什么书
  • 如何做收费网站微信小程序开发教程详解
  • 软件下载网站如何履行安全管理义务网站合同书