一、C/C++
测试环境A:
电脑:笔记本电脑,WIN 7 32位 , Intel i7-2640 2.8GHz CPU,4G内存
软件:VC++ 6.0
1、指针和数组
#include <iostream>
using namespace std;
int main()
{
int a[2]={2,8}; //一维数组
int *p; //指向一维数组的指针
p=a; //等价于p=&a[0]
//调用方式:*(p+i)或*(a+i)
cout<<*(++p)<<endl;
return 0;
}
蓝色部分输出结果为:
8
如果换成:
cout<<*(p++)<<endl;
则输出:
2
还有一种常见用法:
cout<<*p++<<endl;
其实是上面那种的简写,仍然等于2
2、下面程序的输出是
#include<iostream >
using namespace std;
void prt(int *y, int *z) {
cout<<++*y<<","<<*(z++)<<endl;
}
int b=40;
int c=20;
int main() {
prt(&b,&c); // 41 20
prt(&b,&c); // 42 20
return 0;
}
输出:
41,20
42,20
解析:*(z++)这是指针地址后移一位,不影响*z的值。前者,++*y则会对指向的值造成影响。