#includeusing 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.利用指针,采用多种写法对数组求和#includeusing 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 }欢迎分享,转载请注明来源:内存溢出
指针--C++复习--钱能-第3版
1.区分*p在不同位置中的不同含义
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
汉诺塔问题的c语言递归
上一篇
2022-11-08
C语言气泡法实现输入数字按从小到大排序
下一篇
2022-11-08
评论列表(0条)