如何使用指针打印数组行

时间:2014-06-22 09:36:28

标签: c++ arrays pointers

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
ifstream fin("C:\\Users\\rati\\Desktop\\iris_flower.txt");
float s=0;
int x,n=5,m=150,i,j;float d[5]={0};
float **iris;
float ss=n;
iris=new float *[n];
for(i=0;i<n;i++)
iris[i]=new float [m];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin>> iris[i][j];
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<iris[i][j]<<" ";
cout<<endl;        
}
for(j=0;j<m;j++){
for(i=0;i<n;i++)
s+=iris[i][j];
d[j]+=s/ss;
cout<<s<<endl;
}

system ("pause");    
}

这是我的完整代码。我想用指针(没有循环)从2d数组中打印一行。我希望你能写一个片段来添加它做了我想做的事情

2 个答案:

答案 0 :(得分:2)

您可以使用指针修改数组,但是如果要打印数组,则必须使用循环。

看看这个例子: -

int main() {
int n = 3, m = 4, a[n][m], i, j, (* p)[m] = a;
for (i = 0; i < n; i++)
    for (j = 0; j < m; j++)
        a[i][j] = 1;
p++;
(*p)[2] = 9;
return 0;}

这里

p是指向4个元素int数组的指针(即指向int指针的指针,其中第一个维度为4,第二个维度为未知)。当您递增p时,它会指向下一个4元素int数组,即第五个int数组。然后使用偏移量2取消引用p,这意味着第七个int更改,因此您获得

  1 1 1 1
  1 1 9 1
  1 1 1 1

要将p指向的整数数组转换为字符串,请尝试: -

string int_array_to_string(int *p, int size_of_array){
string returnstring = "";
 for (int temp = 0; temp < size_of_array; temp++)
  returnstring += itoa((* p)[temp]);
 return returnstring;
}

你从这里得到行数。

答案 1 :(得分:0)

对于一系列的整数,它就像字母数组一样容易。

int n=10, m=10;

int width, height;
char **tab = new char*[n];
for (int x = 0; x < n; x++) {
tab[x] = new char[m];
}


for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
 tab[i][j] = rand()%10 + '0';


for (int i=0; i<n; i++) { for(int j=0; j<n; j++) cout << tab[i][j]; cout << endl; }
cout << endl;

cout << tab[5];

ideone

///编辑///

如果你不能使用循环和递归,你可以这样做

const int n=3;
float *k =new float [n];

k[0]=6.123;
k[1]=9.5345;
k[2]=1.32423;

int i=0;

label:
if(i<n){
    cout << *(k+i) << " ";
    i++;
    goto label;
}