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

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

指针--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
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4751881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-08
下一篇 2022-11-08

发表评论

登录后才能评论

评论列表(0条)

保存