c语言 - 计算数组"using pointers"的正数、负数、空数的函数



我的主要问题是编写一个C程序,该程序使用带有五个参数的void函数:一个整数类型为T[]的数组,其大小为M,一个整数P,另一个整数为N,还有一个为Null_nbr
我不使用全局变量,而是使用指针(因为我已经在没有指针的情况下使用了(
我编写的程序不会返回任何错误或警告,但它不起作用!如果有人告诉我这个问题在我的程序中的位置,我将不胜感激。

#include<stdio.h>
void function(int [], int , int *, int *, int *);
int main() {
int M, t[M] , i, P, N, Null_nbr;    
printf("enter the size of your array");
scanf("%d", &M);
printf("n enter the array's elements");
for(i = 0; i < M; i++) {
scanf("%d", &t[i]);
}
function(t, M, &P, &N, &Null_nbr);
}
void function(int t[], int M, int *P, int *N, int *Null_nbr) {
int i;
*P=0;
*N=0;
*Null_nbr=0;
for(i = 0; i < M; i++){
if(t[i] == 0)
(*Null_nbr)++;
else if (t[i] < 0)
(*N)++;
else
(*P)++;
}
printf("n P = %d N = %d and  Null=%d", P, N, Null_nbr);        
}

有些程序/编译器不允许像您(t[M](那样定义数组的大小,因为M不是常数值。试着这样写。int *array, size array = (int*)malloc(size * sizeof(int))

它应该这样工作。

如果使用C99
声明int t[M]时,M缺少指定的值。导致未定义的行为

scanf("%d", &M);之后移动声明

int M, i, P, N, Null_nbr;    
printf("enter the size of your array");
scanf("%d", &M);
assert(M > 0);
int t[M];

最新更新