Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 函数打印出数组的不同成员(只允许两个参数)_C_Arrays_Function_Pointers_Declaration - Fatal编程技术网

C 函数打印出数组的不同成员(只允许两个参数)

C 函数打印出数组的不同成员(只允许两个参数),c,arrays,function,pointers,declaration,C,Arrays,Function,Pointers,Declaration,问题是要创建一个函数来打印n个数组及其地址。函数应在main中调用3次。该函数只能有两个参数。 1.它将打印数组的所有成员 2.它将打印0-4之间的元素 3.它将打印元素3-9 我已经做了一个函数体,但我正在努力遵循只有两个参数的条件。其中一个已用于将数组传递给函数,因此只剩下一个 #include <stdio.h> #define size 10 void Input (int arr[]); void AdressOutput (int arr[]); int main(v

问题是要创建一个函数来打印n个数组及其地址。函数应在main中调用3次。该函数只能有两个参数。 1.它将打印数组的所有成员 2.它将打印0-4之间的元素 3.它将打印元素3-9

我已经做了一个函数体,但我正在努力遵循只有两个参数的条件。其中一个已用于将数组传递给函数,因此只剩下一个

#include <stdio.h>
#define size 10

void Input (int arr[]);
void AdressOutput (int arr[]);

int main(void)
{
    int arr[size];
    Input(arr);
    AdressOutput(arr);
return 0;
}
void Input (int arr[])
{
    int i;
    int *p=arr;
    for (i=0;i<size;i++)
    {
        printf ("Please enter a value %d - ",i);
        scanf ("%d",(p+i));
    }
    printf ("\n");

}
void AdressOutput (int arr[])
{
    int i=0;
    int *p=arr;
    for (i=0;i<size;i++)
    {
        printf ("%p,%d\n",(p+i),*(p+i));
    }
}

我唯一能想到的就是再创建两个参数加上数组开始和结束变量,每次调用函数时这些变量都可能不同,但不知何故,我只需要用两个参数来保存它。

这样声明函数就足够了

void AdressOutput( const int arr[], size_t n );
就这样说吧

1. AdressOutput( arr, size );
2. AdressOutput( arr, 5 );
3. AdressOutput( arr + 3, size - 3 );
这是一个演示程序

#include <stdio.h>

#define size    10

void AdressOutput( const int arr[], size_t n )
{
    for ( size_t i = 0; i < n; i++ )
    {
        printf( "%p: %d, ", ( const void * )( arr + i ), *( arr + i ) ); 
    }

    putchar( '\n' );
}

int main(void) 
{
    int arr[size] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    AdressOutput( arr, size );
    AdressOutput( arr, 5 );
    AdressOutput( arr + 3, size - 3 );

    return 0;
}
如果使用两个指针作为参数,那么函数定义如下

void AdressOutput( const int *first, const int *last )
{
    for ( ; first != last; ++first )
    {
        printf( "%p: %d, ", ( const void * )first, *first ); 
    }

    putchar( '\n' );
}
这个函数可以像这样调用

1. AdressOutput( arr, arr + size );
2. AdressOutput( arr, arr + 5 );
1. AdressOutput( arr + 3, arr + size );

也就是说,将范围指定为[first,last

,这样就可以声明函数

void AdressOutput( const int arr[], size_t n );
就这样说吧

1. AdressOutput( arr, size );
2. AdressOutput( arr, 5 );
3. AdressOutput( arr + 3, size - 3 );
这是一个演示程序

#include <stdio.h>

#define size    10

void AdressOutput( const int arr[], size_t n )
{
    for ( size_t i = 0; i < n; i++ )
    {
        printf( "%p: %d, ", ( const void * )( arr + i ), *( arr + i ) ); 
    }

    putchar( '\n' );
}

int main(void) 
{
    int arr[size] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    AdressOutput( arr, size );
    AdressOutput( arr, 5 );
    AdressOutput( arr + 3, size - 3 );

    return 0;
}
如果使用两个指针作为参数,那么函数定义如下

void AdressOutput( const int *first, const int *last )
{
    for ( ; first != last; ++first )
    {
        printf( "%p: %d, ", ( const void * )first, *first ); 
    }

    putchar( '\n' );
}
这个函数可以像这样调用

1. AdressOutput( arr, arr + size );
2. AdressOutput( arr, arr + 5 );
1. AdressOutput( arr + 3, arr + size );

也就是说,范围被指定为[第一个,最后一个

将指针传递到第一个和最后一个元素

void printrange(int *lo, int *hi) {
    while (lo <= hi) {
        printvalue(*lo);
        printaddr(lo);
        lo++;
    }
}

将指针传递到第一个和最后一个元素

void printrange(int *lo, int *hi) {
    while (lo <= hi) {
        printvalue(*lo);
        printaddr(lo);
        lo++;
    }
}

你的问题是什么?你的问题是什么?first!=last as first你能解释一下这个大小吗?我不完全理解它是如何工作的,我可以创建一个变量,并在每次调用函数时更改它的值吗?@MaGK size\t它是一个无符号整数类型,用于指定字符串数组的大小,并用作ndices.例如,size int可能太小,无法保持字符串的大小。first!=last as first您能解释一下这个大小吗?我不完全理解它是如何工作的,我可以创建一个变量,并在每次调用函数时更改它的值吗?@MaGK size\t它是一个无符号整数类型,用于指定字符串数组和用作索引。例如,size int可能太小,无法保持字符串的大小。