栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

指针--C++复习--钱能-第3版

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

指针--C++复习--钱能-第3版

1.区分*p在不同位置中的不同含义
#include
using namespace std;
int main(){
	int a[]={3,2,1,5,9,7};
	int *p = a;                  // 在指针p时初始化,p的值是数组a的首地址
	cout<<"p is : "< 

 int *p = a;  这个语句是定义语句,其中 * 是指针定义符,C++ 为p分配一个空间,并用a的首地址初始化。而 cout<<*p; 中的 * 表示引用p所存储的地址中的内容。p所存储的地址就是a的首地址,该地址上存放的内容就是数组a的首元素,因此 *p = 3。

扩展:上述情况其实是符号 * 造成的。* 是乘法,可用于定义指针,又可用于指针的间接引用。*放在指针定义中时,为指针定义符;* 放在可执行语句中的指针之前,为间接引用操作符。非指针是不能用间接引用操作符的,因为*只能作用于地址。

2.利用指针,采用多种写法对数组求和
#include
using namespace std;
int main(){
	int a[]={3,2,1,5,9,7};
	int *p = a,sum = 0;
	for(int i = 1; i <= sizeof(a)/sizeof(*a); i++) 
		sum += *p++;    // 注意该行中各运算符的优先级
	cout<<"sum is : "< 
在上例中,第i个元素的表示:a[i] = *(a+i) = p[i] = *(p+i)
        第i个元素地址的表示:&a[i] = a+i = p+i = &p[i]
    注:此处“=”是等价的意思
因此对数组求和可有以下更多表示方法:

    for (int i = 0; i < len; i++){
        sum += a[i];        // 1
        sum += *(a + i);    // 2    
        sum += p[i];        // 3
        sum += *(p + i)     // 4
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号