使用C

时间:2017-12-16 19:54:51

标签: c arrays pointers multidimensional-array

我已尝试使用函数和数组执行此操作,但无法使用指针执行此操作。 我想在指针而不是数组的帮助下做到这一点,但我遇到了使用指针传递和调用数组值的问题。 下面是代码。

#include <stdio.h>

void final_array(int arr[], int size);
void array(int arr[], int i, int size);

int main()
{
int num, size[100];
int i, j;
int arr[100][100];

printf("Enter the number of arrays: \t");
scanf("%d", &num);
num = num < 100 ? num: 100;

//feeding elements.

for (i = 0; i<num; i++)
{
    printf("\nEnter the size of the array: \t");
    scanf("%d", &size[i]);

    printf("\nEnter the array: ");

    size[i] = size[i] < 100 ? size[i] : 100;
    array(&arr[i][0], i, size[i]);
}

for(i=0; i<num; i++)
{
    final_array(&arr[i][0], size[i]);
    printf("\n");
}

printf("\nPress Enter key to exit.\n");
getchar();

 return 0;
}

void array(int arr[], int i, int size)
{
    int j;
for (j = 0; j<size; j++)
{
    printf("\nEnter arr[%d][%d]: \t",i, j);
    scanf("%d", &arr[j]);
}
}

void final_array(int arr[], int size)
{
    int j;
    for(j=0; j<size; j++)
    {
        printf("%d\t", arr[j]);
    }
}

1 个答案:

答案 0 :(得分:0)

我想这应该可以解决你的问题。让我知道它是否正确。

#include <stdio.h>
#include <stdlib.h>

void final_array(int *arr, int size);
void array(int *arr, int i, int size);

int main()
{
int num;

int i, j;
int **arr=(int **)malloc(100 * sizeof(int *));
for (i=0; i<100; i++)
        arr[i] = (int *)malloc(100 * sizeof(int));

printf("Enter the number of arrays: \t");
scanf("%d", &num);
int *size=malloc(sizeof(int)*num);
num = num < 100 ? num: 100;

//feeding elements.

for (i = 0; i<num; i++)
{
    printf("\nEnter the size of the array: \t");
    scanf("%d", &size[i]);

    printf("\nEnter the array: ");

    size[i] = size[i] < 100 ? size[i] : 100;
    array(&arr[i][0], i, size[i]);
}

for(i=0; i<num; i++)
{
    final_array(&arr[i][0], size[i]);
    printf("\n");
}

printf("\nPress Enter key to exit.\n");
getchar();

 return 0;
}

void array(int *arr, int i, int size)
{
    int j;
    for (j = 0; j<size; j++)
    {
        printf("\nEnter arr[%d][%d]: \t",i, j);
        scanf("%d", &arr[j]);

    }
}

void final_array(int *arr, int size)
{
    int j;
    for(j=0; j<size; j++)
    {
        printf("%d\t", arr[j]);
    }
}