[VC++入门]指针一
有两个与指针有关的运算符:取地址运算符“&”(用于取一个变量的地址)和指针运算符“*”(以一个指针作为其操作数,其运算结果表示所指向的变量)。
2 void main()
3 {
4 int a, b, *pa, *pb;
5 a=10; b=20;
6 pa=&a; pb=&b; // 使pa指向a,pb指向b
7 cout<<*pa<<','<<*pb<<'\n';
8 pa=&b; pb=&a; // 使pa指向b,pb指向a
9 cout<<*pa<<','<<*pb<<'\n';
10 *pa=100; *pb=200; // 分别对b和a赋值
11 cout<<a<<','<<b<<'\n';
12 }
从上面我们可以看到声明了两个变量a,b类型为int,两个指针pa,pb(指针类型为int *,指向的类型为int)。第一步&a取得为a所分配的地址即将pa指向a的地址,所以*pa=a=10,同理*pb=b=20;第二步同理可以得到*pa=b=20;*pb=a=10;第三步由于第二步将pa指向b,pb指向a所以a=*pb=200,b=*pa=100。
指针与数组关系密切,编程时可以用指针代替下标引用数组元素,指针使数组的使用更为灵活、有效。当声明一个数组后,编译程序会按照数组的类型和长度为它分配内存空间,数组名表示数组在内存中的首地址;当用一个指针变量存储数组首地址时,该指针就指向这个数组,就可以通过指针运算间接访问数组的元素。指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。
2 void main()
3 {
4 int a[ ]={2, 4, 6, 8, 10};
5 int* pa=a; // 或pa=&a[0]
6 int result=0;
7 for(int i=0; i<5; i++)
8 {
9 result+=*pa; // 通过指针访问数组元素
10 pa++; // 指针运算
11 }
12 cout<<"result="<<result<<'\n';
13 }
从上面我们可以看到首先我们声明了一个数组,并付值也就是说分配其内存。而a表示数组在内存中的首地址,声明一个指针并指向a。则pa++就是指向数组的下一个地址(int类型占四个字节)。
本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/06/05/vcpp_points.html,如需转载请自行联系原作者
[VC++入门]指针一相关推荐
- VC入门宝典 by 何志丹
原文地址为: VC入门宝典 by 何志丹 這陣子從頭開始學習:--------------------- 为了方便,也为了vb-->vc过渡成功! VC入门宝典 何志丹 『针对对象』 想学VC, ...
- c语言int转字符串_C语言零基础入门-指针-05
C语言零基础入门-指针-05 本节要点: 1,字符指针. 2,字符串指针. 3,指针的参数传递 4,多重指针 01. 字符指针 这里的定义与前面的基本一样,所谓的字符指针就是这个指针指向的是一个字符型 ...
- 超图桌面开发VC++ 入门程序
先看一下自己的超图版本:下载对应版本的C++开发包: 桌面8.1.0: iServer 8.1.5724: 下载 for Windows: 下载以后:是一些库和示例解决方案:无需安装: 用VC2019 ...
- python 指针_python入门指针
这篇文章主要记录了我自学python的经历和一些比较有效的方式方法,对于还在门外撞墙的同学来说还是很有帮助的. 自学之初 当初想学习python是因为18年夏天,我参与的创业公司处于一个快速发展阶段, ...
- c语言指针查找数组一个数_C语言快速入门——指针与数组
与数组有关的地址 我本来打算以一个程序开始,让我们直接理解相关概念.但转念一想,如果引导你思考问题而得出结论,或许会有另一种效果,因此,我们的讨论以下面的定义为基础. int a = 9;int b[ ...
- VC++入门经典学习笔记--结构和类
1.自定义数据类型 C++中的结构:结构是使用关键字struct定义的用户定义类型.结构起源于C语言,C++继承并扩展了结构.C++中的结构在功能上可以由类代替,因为任何使用结构能够做到的事情都可以使 ...
- vc++ 关于 指针操作
string str="abcdefg";//***测试一char * aa=new char[20];memset(aa,0,20);memcpy(aa,&str[0], ...
- vc++学习精髓(收集,整理)
vc++学习精髓(收集,整理) 以下是很多VC爱好者的学习经历,希望对大家有所帮助: 我记得我在网上是这么说的:先学win32的SDK,也就是API, 再学MFC,这么一来呢,就先有个基础,MFC是A ...
- VC文件读写操作总结
From:http://www.xiaozhou.net/ReadNews.asp?NewsID=248 各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到 ...
最新文章
- Introduction to Objects
- JavaScript的正则表达式实现邮箱校验
- 反网络爬虫以及解决方案
- IOS笔记 本地化多语言支持
- 记忆化搜索,FatMouse and Cheese
- window server 2008 R2 启用方法
- 拉普拉斯算子属于卷积方法吗_论文笔记 - 图卷积神经网络综述
- 苹果Mac Final Cut Pro更新后,如何将视频分享到YouTube?
- 云计算机室怎么样映射d 盘,云服务器磁盘如何映射到本地磁盘
- Cuda Graph (cuda 优化)
- MATLAB 常用绘图命令
- oracle的dbv命令,Oracle的DBV命令行工具用法详解
- (视频分辨率介绍)混淆的概念:SIF与CIF、4CIF与D1
- 清除网页缓存的快捷键
- Windows系统服务器系统日志在哪里查看?
- 游戏角色设计思路规划路径有哪些?
- 00003 不思议迷宫.0009.9:命运之链
- 手把手教你Python+selenium爬虫百度文库源码+解析
- java的声音处理方法
- 计算机控制系统2017模拟题,计算机控制系统模拟试题.doc
热门文章
- LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法
- 在C++中对字符串std::string使用switch/case语句
- php自定义函数出现乱码,php的imagettftext 函数出现乱码的解决方法
- mysql数据库c 操作o_linux下c操作mysql数据库。gcc报错。谁能帮忙看下啊。
- Docker运行sonarqube-(代码质量检测平台)
- android NinePatch图片制做
- java condition_死磕 java同步系列之ReentrantLock源码解析(二)
- python exec函数_Python3 exec 函数
- Python3+Selenium3 之滚动条操作实例与单选框的实例演示
- redis php数据插入失败,redis插入数据,恢复数据测试(禁止淘汰策略下恢复大于redis内存限制数据情况)...