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

来源:互联网 发布:网络买彩票 编辑:程序博客网 时间:2024/05/29 06:55

      以前我也看了很多有关指针的书籍,上面对数组指针和指针数组,做了很好的介绍。但大多数都是先给它们在定义的时候就赋初值,然后讲一下就完事儿,但在实际操作过程中,数据较大而且是不确定的,往往需要我们循环输入,其实,数组指针(*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;
}

 

 

 

0 0
原创粉丝点击