首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

数组作为参数的有关问题

2013-04-21 
数组作为参数的问题#includeiostream#includecstdioint Muti_num(int array[100]){int n_i , n_j , n_

数组作为参数的问题
#include<iostream>
#include<cstdio>

int Muti_num(int array[100])
{
int n_i , n_j , n_num = 9;


for(n_i = 1 ; n_i <= n_num ; n_i ++ )
{
for(n_j = 1 ; n_j <= n_i ; n_j ++)
{
static int n_s = 0 ;
std::cout << n_j << " * " << n_i << " = " << array[n_s ++ ] << " " ;
}
std::cout<<std::endl;
}
return 0;
}

int main()
{
int n_i , n_j , array1[100] , n_num = 9 ;


for(n_i = 1 ; n_i <= n_num ; n_i ++ )
{
for(n_j = 1 ; n_j <= n_i ; n_j ++)
{
static int  n_k = 0 ;
array1[n_k ++ ] = n_i * n_j;
}
}
Muti_num(array1);
return 0;
}


请问一下,如果将上面的变量n_num不给他赋值的时候,为什么在编译器中会提示错误,难道因为数组作为参数是有什么要求吗??下面的程序却可惜实现自己想要的九九乘法表中的一部分,为什么????请问能我解决一下吗?如何能达到下面的程序的功能,谢谢
 #include<iostream>
 #include<cstdio>


int main()
{
int n_i , n_j , array[10][10];
int n_num;
std::cin >> n_num;

for(n_i = 1 ; n_i <= n_num ; n_i ++ )
{
for(n_j = 1 ; n_j <= n_i ; n_j ++)
{
array[n_i][n_j] = n_i * n_j;
}
}

for(n_i = 1 ; n_i <= n_num ; n_i ++)
{
for(n_j = 1 ; n_j <= n_i ; n_j ++)
{
std::cout<<n_j<< " * "<<n_i<<" = "<<array[n_i][n_j]<<"  ";
}
std::cout<<std::endl;
}
return 0;
} c++ a
[解决办法]
任何变量都应该先初始化在使用, 没有初始化就使用编译器会发出警告.
下面那个在使用前有 std::cin >> n_num; 进行初始化.
[解决办法]
数组本身并不带有数组长度的信息,需要自己处理.而不给n_num赋初值就使用的结果是系统会随机给n_num一个值,有很大的概率不是1到9,而是-13324,11341234之类的,一运行,你就发现超过数组上下限,然后程序出错完蛋啦.
[解决办法]
未初始化的变量值不确定,不可使用,两外函数形参中数组的长度不必给出(给了也没用),一般可以通过通过再加一个形参来表示数组的长度,以便在函数内部使用
[解决办法]
你不给n_num赋值,那你的循环怎么办呢。n_num里面的值是随机的。
还有你传的参数是数组,被当作指针,所以在Muti_num里根本不知道数组的长度,它得到的仅仅是数组的地址。

热点排行
Bad Request.