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

php建站系统哪个好大型网站建设公司推荐

php建站系统哪个好,大型网站建设公司推荐,网站的建设与维护实践报告,做问卷有哪些网站系列文章目录 第一章 “C“浒传——初识C语言#xff08;1#xff09;#xff08;更适合初学者体质哦#xff01;#xff09; 第二章 初始C语言#xff08;2#xff09;——详细认识分支语句和循环语句以及他们的易错点 第三章 初阶C语言#xff08;3#xff09;——…系列文章目录 第一章 “C“浒传——初识C语言1更适合初学者体质哦 第二章 初始C语言2——详细认识分支语句和循环语句以及他们的易错点  第三章 初阶C语言3——特别详细地介绍函数  第四章 初始C语言4——详细地讲解数组的内容以及易错点  第五章 初始C语言5——详细讲解操作符以及操作符的易错点   第六章 初始C语言6——详细讲解表达式求值以及其易错点  第七章 初始C语言7——详细讲解有关初阶指针的内容 目录 系列文章目录 前言 一、指针是什么 1.1 指针  总结指针就是地址口语中受到指针通常是指针变量。  1.2 指针变量 1.3 内存 1.2.1 什么是内存  1.2.2 内存的抽象模型 二、指针和指针类型 2.1 指针的解引用 2.2 指针 - 整数 2.3 指针类型的应用 三、野指针 3.1 野指针成因  3.2 如何规避野指针  3.2.1 指针初始化要注意两个点  3.2.2 指针使用之前要检查有效性 悬空指针 四、指针运算 4.1 指针 - 整数 4.2 指针 - 指针 4.3 指针的关系运算 五、指针和数组 六、二级指针 七、指针数组 总结 前言 在上一章内小编带领大家详细学习了有关表达式求值的相关内容学习了隐式类型转换和显式类型转换的相关内容介绍了操作符的一些属性。        而在这一章内小编要带领大家进行学习初阶指针的一些内容不要害怕这一部分只是为了后面讲述进阶指针做一个铺垫所以不要担心指针这一节很难当你刚开始就害怕的话你将永远地活在这个阴影之下会永远学不会这一章的内容希望大家能够有耐心地将这一章看完 一、指针是什么 说起指针小编当年也是比较害怕的因为指针算的上是C语言中很难的一个知识点但是一般写代码的时候也不常用导致很多人不是非常重视所以请认真学习一下这一节刚开始先讲一下之前讲过的东西。 指针理解的两个要点 指针是内存中一个最小单元的编号也就是地址平时口语中说的指针通常指的是指针变量是用来存放地址的变量。 1.1 指针  指针是C语言非常重要的特征指针也是一种变量只不过它所表示的不是数据的值而是内存的地址。通过使用指针可以对任意非绝对内存地址的数据进行读写。在了解指针读写的过程前我们先需要了解如何定义一个指针和普通的变量不同在定义指针时我们通常会在变量名前加一个*号。 我们以32位计算机为例32位计算机的内存地址是4个字节在这种情况下指针的长度也是32位。下面会讲解32位计算机的地址线。 总结指针就是地址口语中受到指针通常是指针变量。  在上面总结中有两个名词内存、指针变量。 我们先来认识一下指针变量再来认识一下内存。 1.2 指针变量 在前面初始C语言5——详细讲解操作符以及操作符的易错点我们学过一个操作符 我们可以通过 取地址操作符取出变量的内存其实就是地址把地址可以存放在一个变量中这个变量就是指针变量。在了解指针读写的过程前我们先需要了解如何定义一个指针和普通的变量不同在定义指针时我们通常会在变量名前加一个 * 号。 int main() {int a 0x11223344; //在内存中开辟一个空间int* p a;//这里我们对变量a取出他的地址//a变量占用4个字节的空间这里是将a的4个字节的第一个字节的地址存放在p变量中p是一个指针变量。return 0; } 总结指针变量就是用来存放地址的变量。存放在指针中的值都被当成地址处理  1.3 内存 可能大家对内存的理解都不是很到位在这里小编将要带领大家进行深一步学习大家先记住一句话就是内存和存储空间不是一回事。更加详细地请看内存 1.2.1 什么是内存  内存是计算机中的重要部件也称内存储器和主存储器它是程序和CPU进行沟通的桥梁。计算机中所有程序的运行都在内存中进行它用于暂时存放CPU中的运算数据以及与硬盘等外部存储器交换的数据。内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行操作系统就会把需要运算的数据从内存调到CPU中进行运算当运算完成CPU将结果传送出来。 1.2.2 内存的抽象模型 为了方便大家记住我们把内存模型映射成为我们现实生活中的模型内存的模型是一层一层的在现实生活中其很像我们生活中的高楼大厦。 在这个高楼大厦中一层可以存储一个字节的数据楼层号就是地址下面是内存和楼层整合的模型图。 我们知道程序中的数据不仅只有数值还有数据类型的概念 从内存上看就是占用内存大小占用楼层数的意思。即使物理上强制以1个字节为单位来逐一读写数据的内存在程序中通过指定其数据类型也能实现以特定字节数为单位来进行读写。 在上面的讲解中也会有一些问题 一个小的单元到底是多大一个字节如何编址 我们先来回答第一个问题经过仔细地计算和权衡会发现一个字节给一个对应的地址是比较合适的。因为最小的数据类型是char其单位为一个字节。如果过小不好存储数字如果过大又很浪费空间。    那么回答第二个问题 对于32位的机器假设有32根地址线那么假设每根地址线在寻址的时候产生高电平高电压和低水平低电压就是1或者0那么32根地址线产生的地址就会是 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000002 ...... 11111111   11111111   11111111   11111111 这里就有2的32次方个地址每一个地址表示一个字节。那我们就可以给2^32byte 2^32/1024KB   2^32/1024/1024MB  2^32/1024/1024/1024GB 4GB4G的空间进行编址。同样的方法那64位机器如果给64根地址线那能编址多大空间答案是16G的空间。 但这里我们应该明白 在32位机器上地址是32个0或者1组成的二进制序列那地址就要用4个字节一个字节是8个byte的空间进行存储所以一个字节变量的大小就应该是4个字节。那如果是在64位机器上如果有64个地址线那一个字节变量的大小是8个字节才能存放一个地址。 总结 指针是用来存放地址的地址是唯一标识一块地址空间的。指针的大小在32位平台是4个字节在64位平台上是8个字节。 二、指针和指针类型 在之前我们学习变量时会根据现实生活提供不同的类型整形浮点型等……那么指针有没有类型呢准确地说有的。 当有这样的代码 int num 10; p num; 我们要将 numnum的地址保存到p中我们知道p是一个指针变量那么它的类型是什么呢我们要给指针变量相应的类型。 char* pc NULL; int* pc NULL; short* pc NULL; long* pc NULL; float* pc NULL; double* pc NULL; 这里可以看到指针的定义方式是type * 。 其实 char* 类型的指针是为了存放 char 类型变量的地址short* 类型的指针是为了存放 short 类型变量的地址int* 类型的指针是为了存放 int 类型变量的地址。 那为什么要这么麻烦指针变量的大小不是都是4或者8个字节吗那指针类型的意义是什么请看下面进行讲解  2.1 指针的解引用 #include stdio.h int main() {int n 0x11223344;char* pc (char*)n; //为了消除警告int* pi n;*pc 0;//重点在调试的过程中观察内存的变化*pi 0;//重点在调试的过程中观察内存的变化return 0; } 在调试过程中我们可以发现指针类型是有意义的指针类型决定了指针进行解引用操作时访问几个字节。 总结 指针的类型决定了对指针解引用的时候有多大的权限能操作几个字节。比如char* 的指针解引用就只能访问一个字节而 int* 的指针解引用就能访问四个字节。 经过上面的学习有些人可能要疑惑为什么不自动识别传来的地址是什么类别的呢 其实是已经识别了。 2.2 指针 - 整数 #include stdio.h int main() {int n 10;char* pc (char*)n;int* pi n;printf(%p\n, n);printf(%p\n, pc);printf(%p\n, pc 1);printf(%p\n, pi);printf(%p\n, pi 1);return 0; } 为什么这两个指针跳过的大小不同呢  首先这两个指针的类型是不一样的 其次整形类型指针指向的是一个整形的对象字符类型指针指向的是一个字符的对象。 总结 指针的类型决定了指针向前或者向后走一步跳过几个字节距离。 比如一个 char* 的指针加1跳过一个字节一个 int* 的指针加1跳过4个字节。 2.3 指针类型的应用 三、野指针 野指针顾名思义就是不确定的指针大家可以用野人来类比。概念野指针就是指针指向的位置是不可知的随机的、不正确的、没有明确限制的  说明指针变量也是变量在前面我们知道如果变量不初始化在内存中会存放随机值全局变量不初始化存放0局部变量不初始化存放随机值。同理指针变量如果赋给随机值是没有意义的会成为野指针的。随机值会导致指针无法指向一个有效的内存空间操作系统不允许操作此指针指向的内存区域。 注释野指针是不会直接引发错误的而野指针指向的内存空间会出现问题的。  3.1 野指针成因  1.指针未初始化指针变量终究只是一个变量就和全局变量与局部变量一样如果不给这个变量进行初始化那么这个变量将会存放随机值 下面进行代码演示 int* p; //局部变量指针为初始化默认为随机值 //正确写法为int* p NULL;*p 20;2.指针越界访问在数组这一节中我们学习数组越界访问其实指针越界访问与其类似指针指向的空间超出了其分配的合理空间。 下面进行代码演示 int arr[10] {0};int* p arr;for(int i 0; i 10; i) //正确写法为for(int i 0; i 10; i){//当指针指向的范围超出数组arr的范围时p就是野指针*(p) i;} 3.指针指向的空间释放在未学习动态内存开辟时我们先用函数释放来解释这个成因。建立一个返回值为指针类型的函数在主函数中用指针变量进行接收当程序出函数体后原先函数所指向的空间进行释放此时指针就为野指针。 下面进行代码演示 int* test() {int a 10;return a; } int main() {int* p test();printf(%d\n, *p);return 0; } 3.2 如何规避野指针  指针初始化小心指针越界指针指向的空间释放及时置NULL避免放回局部变量的地址指针使用之前检查有效性 3.2.1 指针初始化要注意两个点  先看代码进行举例 int a 10; int* p a; 如果明确指针应该指向哪里的话就应该初始化正确的地址 如果不能明确指针应该指向哪里的话安全起见要将指针初始化为NULL 空指针就是0 3.2.2 指针使用之前要检查有效性 #include stdio.h int main() {int* p NULL; //不管三七二十一我们要进行初始化//……int a 10;p a;if(p ! NULL)*p 20;return 0; } 在这里我们要先说一句NULL是0其实它也是一个地址但是在我们用户手中是无法访问的一旦我们去访问程序就会崩溃。  悬空指针 四、指针运算 4.1 指针 - 整数 int main() {int arr[] { 0,1,2,3,4,5,6,7,8,9 };// 0 1 2 3 4 5 6 7 8 9 //使用指针打印数组的内容int* p arr;for (int i 0; i 10; i){printf(%d , *(p i));//p指向的是数组首元素//pi 是数组中下标为i的元素的地址//pi 起始时跳过了i*sizeof(int)个字节}printf(\n);return 0; } 扩展arr p             arri pi              *(arri) *(pi) arr[i]             *(iarr) i[arr] 4.2 指针 - 指针 指针 - 指针的前提是两个指针指向同一块区域指针类型相同的指针 - 指针差值的绝对值是指针和指针之间的元素个数 int arr[10]; printf(%d\n, arr[0] - arr[9]); //-9 printf(%d\n, arr[9] - arr[0]); //9 模拟实现一下strlen函数 size_t my_strlen(char* ptr) {char* s ptr;while(*s) //还可以这样写while(*s ! \0)s;return s - ptr; } 4.3 指针的关系运算 #define N_VALUES 5 for(vp values[N_VALUES];vp values[0];) {*--vp 0; } 代码简化将这个代码进行修改 for(vp values[N_VALUES];vp values[0]; vp--) {*vp 0; } 实际上在绝大部分的编译器上是可以顺利完成任务的然而我们还是要避免这样写因为标准并不能保证这个方法可行。  标准规定         在C语言中允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。 五、指针和数组 在一小部分中我们要知道 指针就是指针指针变量就是变量是用来存放地址的指针变量的大小是4/8个字节数组就是数组可以存放一组数数组的大小是取决于元素的类型和个数数组的数组名是数组首元素的地址两种情况除外指针变量是可以访问地址的 在绝大多数情况下数组名和数组首元素的地址是一样的看下图 总结 数组名表示数组首元素的地址。  但是有两个例外 sizeof(数组名)数组名单独放在sizeof内部数组名表示整个数组计算的是数组的大小单位是字节。数组名数组名表示整个数组取出的是数组的地址。数组的地址和数组首元素的地址值是一样的但是类型和意义是不一样的。 既然可以把数组名当成地址存放到一个指针中我们使用指针来访问就成为可能那我们可以直接通过指针来访问数组。看下下面代码 int main() {int arr[] { 1,2,3,4,5,6,7,8,9,0 };int* p arr; //指针存放数组首元素的地址int sz sizeof(arr) / sizeof(arr[0]);for (int i 0; i sz; i){printf(%d , *(p i));}return 0; } 六、二级指针 指针变量也是变量一级指针变量是变量就有地址那指针变量的地址存放在哪里这个就是二级指针。下面就是代码解释 int a 10; int* p a; //p是指针变量一级指针变量 int* * pp p; //pp是指针变量二级指针变量 //你还可以继续写有几个*,就是几级指针变量 //int** * ppp pp; //ppp是指针变量三级指针变量 七、指针数组 指针数组是指针还是数组呢答案是是数组是存放指针的数组。我们可以使用指针数组来模拟实现一个二维数组。 int main() {int arr1[] { 1,2,3,4,5 };int arr2[] { 2,3,4,5,6 };int arr3[] { 3,4,5,6,7 };int* arr[] { arr1, arr2, arr3 };for (int i 0; i 5; i){for (int j 0; j 5; j){printf(%d , arr[i][j]);}printf(\n);}return 0; } 总结 在这一部分小编详细地编写了有关初阶指针的一篇博客。希望大家看完以后进行点评谢谢大家
http://www.pierceye.com/news/804551/

相关文章:

  • 网站建设工作有底薪吗360优化大师
  • 门户网站微信服务号建设大型网站建设优化排名
  • 贵州省冶金建设有限公司网站wordpress end_lvl
  • 网站建设的工作职责是什么网站后台显示连接已重置
  • 俱乐部手机网站模板微信公众号个人可以做网站么
  • 简述一个网站开发流程软件下载网站搭建
  • 超级营销型网站模板建湖人才网官网登录
  • 建设网站都需要什么万网二手已备案域名
  • 网站建设运营维护合同快捷建站专家
  • 中山建设网站公司软件工程开发
  • 网站备案logo韩国展厅设计网站
  • 网站建设沧州做网站导航能赚钱吗
  • 自己怎么创建免费网站wordpress使用插件
  • 做一个个人主页的网站怎么做商城小程序模板
  • 网站站内链接怎么做wordpress文章样式插件
  • 网站大全浏览器济南免费网站建设优化
  • 招聘网站入职分析表怎么做网站关键字挖掘
  • 锡盟本地网站建设网站欢迎页面代码
  • 有做网站吗个人站长网站
  • 免费网站模板下载图怪兽在线制作
  • 黑龙江网站设计公司广告海外推广
  • 农产品网站建设策划国际新闻最新10条
  • 南通制作网站公司开发公司与物业公司移交协议
  • 做网站为什么很复杂最简单的免费网站制作模板
  • 高端网站公司书画工作室网站模板网站建设
  • 招标网站免费平台永州做网站公司
  • 企业网站建设 cmsphp网站建设方案
  • 自适应网站建设沈阳潍坊制作网站的公司
  • lamp网站开发黄金组合下载宣传页模板
  • 精通网站建设100全能建站密码摄影学习网站