文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>数组和指针

数组和指针

时间:2010-10-11  来源:CicyIris

一、

int *a,b,c;此句中只有a是指针变量,其他为int型变量。如果需要将三者都定义为指针变量,则应该写为:

int *a;

int *b;

int *c;

二、

C++中函数传递方式为3种:按值传递、指针传递、引用传递。

按值传递中,被传递的参数值在函数体内改变时,调用主题的原始数值不会发生改变。例如:

#include<iostream>
#include<cstdlib>
using namespace std;
void te(int y)
{
 cout<<y<<endl;
 y++;
 cout<<y<<endl;
}
void main()
{
 int x=0;
 cout<<x<<endl;
 te(x);
 cout<<x<<endl;
}

显示结果:

0

0

1

0

而指针传递和引用传递则可以修改调用主题中的原始数值。将上例修改为指针传递:

#include<iostream>
#include<cstdlib>
using namespace std;
void te(int *y)
{
 cout<<*y<<endl;
 (*y)++;
 cout<<*y<<endl;
}
void main()
{
 int x=0;
 cout<<x<<endl;
 te(&x);
 cout<<x<<endl;
}

修改为引用传递:

#include<iostream>
#include<cstdlib>
using namespace std;
void te(int &y)
{
 cout<<y<<endl;
 y++;
 cout<<y<<endl;
}
void main()
{
 int x=0;
 cout<<x<<endl;
 te(x);
 cout<<x<<endl;
}

两者输出结果都是:

0

0

1

1

引用传递和指针传递作用一样,区别仅在于清晰性和易读性而已。

三、

C++的引用可以理解为变量的别名。引用不是值,它不占内存空间,声明引用时目标的存储状态不会改变。引用和指针的区别:不存在空引用,引用必须指向某一个对象,而存在空指针;指针应该总是被测试,防止其为空,而引用以前不需要测试其合法性;引用不能像指针一样重新赋值。

另外不能建立引用的数组,引用本身不是数据类型,没有引用的引用,也没有引用的指针。

四、

若定义int b[5]={6,7,8,9,10},而cout<<b[6],则系统可能依然输出一个值。数组b中不存在b[6],但是b[6]位置却存在一个合法值,于是程序输出了结果。若果这个位置上的值比较敏感,后果则可能非常严重。c++是不提供边界检查的。

五、

*p++和*(p++)作用是相同的,因为++和*的优先级相同,且结合方式是从右到左。*(++p)是先对指针加1,再取*p。

如果一个数组为b[M][N],若将其转化为一个一维数组B[M*N],那么原二维数组中的b[m][n]就对应B[(m+1)*(n+1)-1]。

相关阅读 更多 +
排行榜 更多 +
PvZ戴夫的时空冒险重置

PvZ戴夫的时空冒险重置

策略塔防 下载
PVZTV雪版阳光加50

PVZTV雪版阳光加50

策略塔防 下载
双刃战士雪姐

双刃战士雪姐

冒险解谜 下载