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

如何在网站上做网页链接女孩短期技能培训班

如何在网站上做网页链接,女孩短期技能培训班,山东省建设备案在哪个网站,开发一套微商城多少钱1.什么是指针: 指针是存放地址的地方,是内存中最小单元的地址(编号),内存被分为一个个小的单元格,每一格有一个字节。比如说int a0;a会占据四个字节的大小,每个字节对应单元格都有自…

1.什么是指针:

        指针是存放地址的地方,是内存中最小单元的地址(编号),内存被分为一个个小的单元格,每一格有一个字节。比如说int a=0;a会占据四个字节的大小,每个字节对应单元格都有自己的编号,&a代表着第一个单元格的地址,用十六进制表示:0x0000006b2d1dfa34

2.指针变量的大小:

        从上面我们得知指针是用来存放地址的地方,所以地址的长度决定了指针变量的大小。对于64位系统,每个地址长度是16位十六进制数(一个十六进制位恰好可以表示4位二进制位),所以需要4*16个比特位(二进制位),也就是4*16(地址所占比特位)/8(1字节所占比特位)=8字节,所以在64位系统中,指针变量的大小是8字节,而在32位系统中也可以得知是4个字节。

3.指针类型的问题引出:

在上面我们说明了指针变量是存放地址的地方,在64位系统之中都是由16为二进制数构成,而我们又知道,指针变量有不同的类型,如int*,double*,char*等等;现在就有一个疑问,指针大小是由地址长度确定的,需要这么多类型的指针类型干什么呢?接下来我们将对指针类型的意义进行探索。

4.不同指针类型的意义:

        4.1指针类型决定了指针在算数运算时移动的单位。

 比如如下代码:对于int*p1,p1+1移动的单位为4个字节;而char*p2,p2+1只移动了一个字节。这样的方便之处在于,可以对指针进行相应的算数运算来实现一些操作。比如数组的遍历,如果指针类型与对应的数据类型不匹配的话,就会导致指针所指向的地址出错,对应解引用也会出错。 

4.2指针类型决定指针解引用时访问的长度。比如如下代码:解应用的访问主要表现在两个方面:1.对于数据的修改  2.对于数据的打印。

从上面的结果可以看出,char*解引用只能访问1个字节(2个十六进制数)而int*可以访问4个字节(8个十六进制数)。

注:是否可以利用指针类型访问字节数相同,但是指针类型不相同的指针来解引用修改数据呢?比如float和int都是,答案是否定的,因为浮点数在内存中储存与整数不一样,

5.野指针:

"野指针"是一个非正式的术语,用于描述一个指向无效内存地址的指针。这种指针可能会引发未定义的行为,如程序崩溃、数据损坏等。以下几种情况可能会导致野指针的产生:

1.未初始化的指针:指针变量在声明后未被赋值,其值是不确定的;比如如下代码:int* p;*p = 0p指向的地址是不确定的,对p解引用,虽然不报错,但是对于p我们无法掌控。

2.指针指向的内存被释放:当使用动态内存分配(如malloc)创建的内存被释放(如使用free)后或者函数内局部变量地址作为返回值使用,指向该内存的指针就变成了野指针。比如下列代码:a在执行完fun函数之后就会被销毁,此时再对于a进行解引用,就会产生野指针。

  int* fun(void)
{int a = 0;return &a;
}
int main()
{int* p = fun();*p = 20;return 0;
}

3.指针越界:当指针访问数组或缓冲区之外的内存时,它也可能变成一个野指针。比如如下代码:

在实际使用中应该避免野指针的出现,对于指向地址位置的指针常常初始化为NULL

6.指针运算:

        6.1.指针的关系运算,指针与地址比较常用于数组中,因为数组是一组连续的地址,且地址由低到高(这是地址比较的依据)。

        6.2.指针的算术运算,如下面的代码:通过比较地址和对指针加减整数的操作实现了数组的初始化和打印。

 int arr[] = {1,2,4,5,6,10,25,78,99,100};
int* p = arr;
int sz = sizeof(arr)/sizeof(arr[0]);
//将数组中的元素全部初始化为0
for (int i = 0; p < &arr[sz]; p++)
{*p = i;
}
//此时p指向的是数组中的最后一个元素的后一个地址
//所以p--指向最后一个元素
p--;
for (; p >= &arr[0]; p--)
{printf("%d ", *p);
}

        6.3.指针(地址)之间的运算:对于指向同一数组不同元素的指针(地址),两个指针(地址)差的绝对值是两者之间的元素个数。如下    列代码:

int arr[10] = {1,2,4,5,6,10,25,78,99,100};
printf("%d", &arr[9] - &arr[0]);
//打印结果为9

该特性是对于内存的直接应用。比如下列代码:

int my_strlen(char* str)
{char* start = str;while (*str != '\0'){str++;}return str - start;
}
int main()
{printf("%d", my_strlen("abcdef"));return 0;
}

7.二级指针:

存放一级指针变量地址的指针变量。需要注意的就是,二级指针可以进行两次解引用,分别对应有不同的意义。比如下列代码:

int a = 0,b=0;
int* p = &a;
int** pp = &p;
**pp = 20;//两次解引用可以访问到a的地址
*pp = &b; //一次解引用可以访问到b的地址
**pp = 10;
printf("%d\n", a);//结果:20
printf("%d", b);  //结果:10

8.指针数组:

存放地址的数组。这里只介绍其简单的应用,如下列代码:将三个数组地址存放在一个指针数组中,从而联系起来。

int arr[5];
int brr[5];
int crr[5];
//指针数组,存放地址
int* prr[3] = { arr,brr,crr };
for (int i = 0; i < 3; i++)
{for (int j = 0; j < 5; j++){//prr[i]代表访问prr数组中下标为i的元素(地址)//比如prr[0]<==>arr,相当于直接替换//prr[0][j]<==>arr[j]//通过指针数组将三个不相关的数组联系起来prr[i][j] = 0;}
}
for (int i = 0; i < 3; i++)
{for (int j = 0; j < 5; j++){printf("%d ", prr[i][j]);}printf("\n");
}

http://www.khdw.cn/news/5529.html

相关文章:

  • 月子中心网站建设需求怎么推广销售
  • javaweb做网站推广普通话的意义50字
  • 做个企业网站要多少钱百度竞价关键词质量度怎么提升
  • python做网站性能太差免费推广神器
  • 容桂销售型网站建设关键词排名零芯互联关键词
  • 网站开发论文结论怎么写网站seo推广seo教程
  • 正大建设集团股份有限公司网站最佳磁力吧ciliba磁力链
  • 微软网站怎么做的自己如何做网站
  • app开发公司的风险及应对策略哪家网站优化公司好
  • wordpress果酱主题广州企业网站seo
  • 个人网站需公安备案吗百度广告投放公司
  • wordpress全站静态站长资讯
  • 深圳人才网招聘官方网站长工具seo综合查询官网
  • 什么网站代做毕业设计比较好竞价推广思路
  • 政务网站建设办法鸿科经纬教网店运营推广
  • 新疆建设工程信息官网seo快速推广窍门大公开
  • 网上做预算有哪些网站通州区网站快速排名方案
  • 新开河街做网站公司百度推广怎么弄
  • 宁德做网站免费b2b网站有哪些
  • 天津网站开发网站沈阳全网推广公司哪家好
  • 国外网站建设企业淘宝关键词怎么选取
  • 如何看网站日志企业网页制作
  • 个人空间网站bt磁力搜索引擎
  • 成品网站nike源码1688免费最新seo网站优化教程
  • 做壁纸的网站业务推广网站
  • 专门做ppt的网站斧头营销知识和技巧
  • 甘肃嘉峪关建设局网站百度推广找谁做
  • 网站建设流程包括哪些内容怎么做推广网络
  • 域名备案做电影网站深圳市龙华区
  • 网站 中国最早做网站的长沙百度网站优化