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

河南濮阳网站建设制作自己的网站

河南濮阳网站建设,制作自己的网站,网站主机一个g,石家庄网站制作哪家好1 引言 对于学习指针要弄清楚如下问题基本可以应付大部分的场景: ① 指针是什么? ② 指针的类型是什么? ③ 指针指向的类型是什么? ④ 指针指向了哪里? 2 如何使用指针 任何东西的学习最好可以总结成一种通用化的…

1 引言

对于学习指针要弄清楚如下问题基本可以应付大部分的场景:

①  指针是什么?
②  指针的类型是什么?
③  指针指向的类型是什么?
④  指针指向了哪里?

2 如何使用指针

任何东西的学习最好可以总结成一种通用化的方法。笔者总结了一下指针的使用步骤:

① 声明指针变量;
② 初始化;
③ 访问指针指向的数据。

3 指针的使用示例

3.1 数值指针

数值指针的使用分为三个步骤:

① 声明一个数值指针变量;
② 初始化这个数值指针变量;
③ 访问这个数值指针变量指向的数据。

1)代码示例:

 //-----------------声明指针变量
int* prt_a = nullptr;//声明一个整型数指针变量,nullptr—空指针
//-------------初始化指针变量,采用指向已有变量的方式-----
int a = 10; //定义整型数值常量
prt_a = &a;//指针指向了变量a的地址&a//---------访问指针数据
int my_test = 0;
my_test = *prt_a;
cout << "a = " << a << endl;
cout << "my_test = " << my_test << endl;
cout << "*prt_a = " << *prt_a << endl;
//----------访问并修改指针指向的数据
*prt_a = 20;
cout << "a = " << a << endl;
cout << "*prt_a = " << *prt_a << endl;
//-----访问地址
cout << (void*)prt_a << endl;

 2)运行结果:

3)代码解读:

① 声明一个整型数变量a,它的值为10,它的地址是&a,它在计算机上的执行原理是:在物理上,内存地址为&a的内存处,存放了 (int)10的编码,通过对该内存处的编码解码就可以得到(int)10;
② 声明一个指针变量prt_a,它指向了变量a的地址;
③ 通过解引用*prt_a,就可以获取指针变量指向的数据,也就是a的值,int(10);
④ 将指针变量指向的数据赋值给整型变量my_test ;
⑤ 将指针变量指向的数据修改为20,实际上也就是将整型变量a的值修改为20。

3.2 数组指针

也是分三个步骤:

① 声明一个数组指针变量;

② 初始化数组指针变量;

③ 访问;

代码示例:

    //指针与一维数组//定义一个指针变量int* array_p = nullptr;//类型是int*//初始化,指向一个数组常量int array[] = { 1,3,4,5 };array_p = array;//数组名是数组首地址,指针类型是int*,指针变量指向的是int,指针指向了数组的首地址cout << sizeof(array) / sizeof(int) << endl;//访问数组for (int i = 0; i < sizeof(array) / sizeof(int);i++){cout << array[i] << endl;//访问数组的元素cout << *(array_p + i) << endl;//采用指针变量,访问数组的元素cout << (void*)(array_p + i) << endl;//访问数组的地址,数组名是首地址,指针+1表示内存里面+一片内存的长度,长度=sizeof(int)=4,所以此处指针的值会+4}

运行结果如下:

代码解读:

① 声明一个整型指针变量,指向空指针;

② 声明一个数组常量,它的首地址即是数组名,数组的元素按顺序存放在首地址处的物理内存里,长度是数组占的字节数4*4 = 16个字节;

③ 将指针变量指向数组首地址,数组的类型必须是int;

④ 访问:

  • 通过数组索引去访问数组元素;
  • 通过指针解引用的方式,依次访问数组元素,array_p + i是第i个元素的地址;
  • 访问指针的地址,每个元素之间地址的差值是4(int类型占4个字节)。

3.3 结构体指针

结构体指针的使用和数组指针的使用类似,只是结构体指针使用前需要先声明一个结构体(数据类型),因此可以分为4个步骤:

① 声明一个结构体(对于基本数组类型或者数组而言,使用的是默认的数据类型——int、char、float等,所以不需要声明);

② 声明一个结构体指针;

③ 初始化结构体指针;

④ 访问结构体的元素。

1)代码示例: 

   //声明一个结构体mystruct test = { 10,'d',3.14f };//初始化结构体//声明一个结构体指针mystruct* ptr = nullptr;//初始化,指向结构体的首地址ptr = &test;//结构体名称不是首地址,需要用&来 获取首地址//访问结构体里的元素cout << ptr->a << endl;cout << ptr->b << endl;cout << ptr->c << endl;//修改元素ptr->c = 50.0f;//赋值cout << ptr->c << endl;//访问结构体元素的地址,结构体单元之间可能存在空隙,不能用ptr+1来访问cout << (void*)&ptr->a << endl;cout << (void*)&ptr->b << endl;cout << (void*)&ptr->c << endl;

2)运行结果如下:

3)代码解读:

① 声明了一个结构体常量;

② 声明了一个结构体指针,指向空指针;

③ 初始化指针,指向结构体常量的首地址,注意:和数组不一样,结构体的首地址不是结构体名,是&结构体名

④ 通过指针访问结构体的元素,格式是:->;

⑤ 修改第三个元素值的值,值由3.14变为50;

⑥ 访问结构体元素的地址,注意:结构体单元之间可能存在空隙,不能用ptr+1来访问

4 总结

通过上面的案例对引言中提到的问题进行一下总结,如下:

① 指针变量是什么?指针变量就是变量的地址,也就是变量存放在物理内存上的位置,把内存比作电影院的座位,指针变量就是座位的序号;
② 指针类型是什么?去掉变量名以后剩下的就是指针类型;
③ 指针指向的类型是什么?去掉*变量名以后,就是指针指向的类型;
④ 指针指向了哪里?指针指向了变量的所存放的地址。

5 注意事项

 ① 两个指针不能进行加法运算,这是非法操作,因为进行加法后,得到的结果指向一个不知所向的地方,而且毫无意义
② 指针的值是XX,相当于说该指针指向以XX为首地址的一片区域,这片区域的大小由指针指向的类型决定;
③ &是取地址运算符,*p 的结果是p 所指向的东西。

http://www.dtcms.com/wzjs/204265.html

相关文章:

  • 长沙网站seo收费西安关键字优化哪家好
  • 苏州公司建设网站全网推广成功再收费
  • 大连优化网站课程长沙网站seo外包
  • 公司建立网站怎么做分录网络推广的好处
  • 公司网站域名到期了去哪里缴费百度竞价关键词出价技巧
  • 用笔记本电脑能建设网站吗seo公司培训课程
  • 通许画册设计网站关键词简谱
  • 网站域名变了怎么查微信朋友圈广告投放价格表
  • 1000M双线网站空间免费做网站怎么做网站吗
  • 哪里找专业做网站的人百度账号客服
  • 成都城乡建设部网站首页引流推广软件
  • 成都网站建设 平易云怎么在百度上推广自己的店铺
  • 那个网站可免费做推广百度高级搜索首页
  • 上海网站开发制大金seo
  • 和田地网站seo高端网站建设企业
  • 私人可以做org后缀网站吗兰州seo
  • 蚌埠网站制作哪家好游戏代理平台有哪些
  • lamp 网站建设论文宁波seo外包优化
  • ie6 网站模板郑州官网关键词优化公司
  • java程序员做自己的网站培训机构好还是学校好
  • 隐形眼镜网站开发的经济效益成品网站源码在线看
  • 济南网站技术我要下载百度
  • 创新的微商城网站建设湖南省最新疫情
  • 浙江国泰建设集团有限公司网站免费个人网站模板
  • 杭州创意设计中心百度爱采购优化软件
  • 石家庄有学校交做网站和优化的吗东莞百度seo新网站快速排名
  • 中国建设银行客服网站怎么联系百度人工客服
  • 网站统一做301吉林seo网络推广
  • 如何做免费的公司网站吉林网站推广公司
  • 电商就业前景衡阳百度seo