您的位置:首页 > 其它

彻底征服<<指针数组和指向数组的指针>>

2014-04-11 00:29 423 查看
以前我也看了很多有关指针的书籍,上面对数组指针和指针数组,做了很好的介绍。但大多数都是先给它们在定义的时候就赋初值,然后讲一下就完事儿,但在实际操作过程中,数据较大而且是不确定的,往往需要我们循环输入,其实,数组指针(*a[i])为多个指针,i值为指针的个数。指针数组((*a)[k])是一个二维数组,k表示二维数组的a[i][j]的j的值。因为是指针数组,所以在这儿i的值是可以变化的,所以有些资料也称指针数组为“可变长的二维数组”。

这时,对于数组指针,问题就产生了。多个指针我们应该怎样输入呢?请看下面的代码。

#include<stdio.h>

int main()

{

int i,n;

char *a[20]; // 定义一个指针数组;

scanf("%d",&n);

for(i=0;i<n;i++)

{

a[i]=new char [30]; //给每个指针分配空间

scanf("%s",a[i]); //为每个指针输入信息,由于a[i]就是地址,所以不用&符号,这里要注意,否则在输出可能会出错的

}

for(i=0;i<n;i++)

printf("%s\n",a[i]); //输出

}

//是不是很简单吧?其实没有那么复杂

//接下来是指向数组的指针

#include<iostream> //这个很简单,和二维数组一样,只是需要对数组指针进行动态分配

using namespace std;

int main()

{

int (*a)[3]=new int [5][3]; //这儿的两个3必须一样,否则会出错

int i,j;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

cin>>a[i][j];

for(i=0;i<2;i++) //其实没有必要用这么多循环,为了表达清楚我的思想,所以用了这么多

for(j=0;j<3;j++)

cout<<a[i][j]<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: