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

长沙的网站建设公司哪家好营业推广方案怎么写

长沙的网站建设公司哪家好,营业推广方案怎么写,wordpress优秀的主题,快速开发安卓app软件一、什么是指针 C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。 CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位。这里,数据对象是指存储在内存 中的一个指定数据…

一、什么是指针

C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。
CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位。这里,数据对象是指存储在内存
中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量。也
就是说:指针是一种保存变量地址的变量。

前面已经提到内存其实就是一组有序字节组成的数组,数组中,每个字节大大小固定,都是 8bit。对这些
连续的字节从 0 开始进行编号,每个字节都有唯一的一个编号,这个编号就是内存地址。示意如下图:
在这里插入图片描述

这是一个 4GB 的内存,可以存放 2^32 个字节的数据。右侧侧的连续的十六进制编号就是内存地址,每个内
存地址对应一个字节的内存空间。而指针变量保存的就是这个编号,也即内存地址。

二、为什么要使用指针

在C语言中,指针的使用非常广泛,因为使用指针往往可以生成更高效、更紧凑的代码。总的来说,使用
指针有如下好处:
1)指针的使用使得不同区域的代码可以轻易的共享内存数据,这样可以使程序更为快速高效;
2)C语言中一些复杂的数据结构往往需要使用指针来构建,如链表、二叉树等;
3)C语言是传值调用,而有些操作传值调用是无法完成的,如通过被调函数修改调用函数的对象,但是这
种操作可以由指针来完成,而且并不违背传值调用。

三、如何声明一个指针

3.1 声明并初始化一个指针

指针其实就是一个变量,指针的声明方式与一般的变量声明方式没太大区别:

int *p; // 声明一个 int 类型的指针 p
char *p // 声明一个 char 类型的指针 p
int *arr[10] // 声明一个指针数组,该数组有10个元素,其中每个元素都是一个指向 int
int (*arr)[10] // 声明一个数组指针,该指针指向一个 int 类型的一维数组
int **p; // 声明一个指针 p ,该指针指向一个 int 类型的指针

指针的声明比普通变量的声明多了一个一元运算符 “”。运算符 “” 是间接寻址或者间接引用运算符。当它
作用于指针时,将访问指针所指向的对象。在上述的声明中: p 是一个指针,保存着一个地址,该地址指
向内存中的一个变量; *p 则会访问这个地址所指向的变量。
声明一个指针变量并不会自动分配任何内存。在对指针进行间接访问之前,指针必须进行初始化:或是使
他指向现有的内存,或者给他动态分配内存,否则我们并不知道指针指向哪儿,这将是一个很严重的问
题,稍后会讨论这个问题。初始化操作如下:

/* 方法1:使指针指向现有的内存 */
int x = 1;
int *p = &x;// 指针 p 被初始化,指向变量 x ,其中取地址符 & 用于产生操作数内存地址/* 方法2:动态分配内存给指针 */
int *p;
p = (int *)malloc(sizeof(int) * 10);// malloc 函数用于动态分配内存
free(p);// free 函数用于释放一块已经分配的内存,常与 malloc 函数一起使用,要使用这两个函数需要头文件 stdlib.h

指针的初始化实际上就是给指针一个合法的地址,让程序能够清楚地知道指针指向哪儿。

3.2 未初始化和非法的指针

如果一个指针没有被初始化,那么程序就不知道它指向哪里。它可能指向一个非法地址,这时,程序会报
错,在 Linux 上,错误类型是 Segmentation fault(core dumped),提醒我们段违例或内存错误。它也可
能指向一个合法地址,实际上,这种情况更严重,你的程序或许能正常运行,但是这个没有被初始化的指
针所指向的那个位置的值将会被修改,而你并无意去修改它。用一个例子简单的演示一下:

#include "stdio.h"
int main()
{int *p;*p = 1;printf("%d\n",*p);return 0;
}

这个程序可以编译通过,但是运行的话会报错,报错信息如下:
在这里插入图片描述

要想使这个程序运行起来,需要先对指针 p 进行初始化:

#include "stdio.h"
int main()
{int x = 1;int *p = &x;printf("%d\n",*p);*p = 2;printf("%d\n",*p);return 0;
}

这段代码的输出结果如下:
在这里插入图片描述

可以看到,对指针进行初始化后,便可以正常对指针进行赋值了。

3.3 NULL指针

NULL 指针是一个特殊的指针变量,表示不指向任何东西。可以通过给一个指针赋一个零值来生成一个
NULL 指针。

#include "stdio.h"
int main()
{int *p = NULL;printf("p的地址为%p\n",p);return 0;
}
/***************
* 程序输出:
* p的地址为(nil)
***************/

可以看到指针的地址为nil,即空值,也可以理解为0。在大多数的操作系统上,程序不允许访问地址为 0
的内存,因为该内存是为操作系统保留的。但是,内存地址 0 有一个特别重要的意义,它表明改指针不指
向一个可访问的内存位置。

四、指针的运算

C 指针的算术运算只限于两种形式:

1) 指针 + - 整数

可以对指针变量 p 进行 p++、p–、p + i 等操作,所得结果也是一个指针,只是指针所指向的内存地址相比于 p 所指的内存地址前进或者后退了 i 个操作数。比如,0x10000000等是内存地址的十六进制表示(数值是假定的),p 是一个 int 类型的指针,指向内存地址 0x10000008 处。则 p++ 将指向与 p 相邻的下一个内存地址,由于 int 型数据占 4 个字节,因此 p++ 所指的内存地址为 1000000c。其余类推。不过要注意的是,这种运算并不会改变指针变量 p 自身的地址,只是改变了它所指向的地址。

2)指针 - 指针

只有当两个指针都指向同一个数组中的元素时,才允许从一个指针减去另一个指针。两个指针相减的结果的类型是 ptrdiff_t,它是一种有符号整数类型。减法运算的值是两个指针在内存中的距离(以数组元素的长度为单位,而不是以字节为单位)。举个例子:

#include "stdio.h"
int main()
{int a[10] = {1,2,3,4,5,6,7,8,9,0};int sub;int *p1 = &a[2];int *p2 = &a[8];sub = p2-p1;printf("%d\n",sub);// 输出结果为 6sub = p1-p2;printf("%d\n",sub);// 输出结果为 -6return 0;
}
http://www.tj-hxxt.cn/news/104156.html

相关文章:

  • 深圳做个商城网站设计推广app平台
  • 营销网站解决方案电子商务主要干什么
  • 绍兴建站模板厂家广告联盟接单平台
  • b2b2c是什么意思啊嘉兴seo网络推广
  • 深圳做网站服务商营销软文范文
  • 深圳网站建设推广方法aso优化服务平台
  • 网站建设 推广找山东博达营销助手
  • 织梦网站建设案例网络营销渠道有哪些
  • 有没有通信专业业余做兼职的网站广东今天新闻最新消息
  • 西安知名的集团门户网站建设费用刷粉网站推广快点
  • wordpress 标签别名 id手机网站排名优化
  • 给自己的爱人做网站恶意点击广告软件
  • 舞蹈网站模板南京百度竞价推广公司排名
  • springboot企业网站开发网站查询网
  • 做网站什么框架方便电商平台怎么加入
  • 注册公司那家网站做的比较好全球最大的中文搜索引擎
  • dz论坛怎么做视频网站吗今日军事新闻最新消息中国
  • 公司网站找谁做百度商家版下载
  • 帝国cms调用网站地址长沙关键词优化新行情报价
  • 做的网站怎么上传到网上运行全国seo公司排名
  • 做网站背景图片怎么放友情链接的网站有哪些
  • 网站标题符号的应用桂林网站设计制作
  • 阿里云网站建设视频竞价托管的注意事项
  • 专业足球网站建设搜索引擎优化的核心本质
  • 网站建设品牌西安seo服务外包
  • 做优化需要发多少个网站引流推广接单
  • 折扣网站怎么做30个免费货源网站
  • 管理咨询公司好不好做重庆关键词优化软件
  • 温岭网站制作长沙网站seo推广
  • 做b2b企业外贸网站广告网站策划方案