Closed Thread
Results 1 to 4 of 4

Thread: Размер массива указателей. (size of pointer array)

  1. #1

    Default Размер массива указателей. (size of pointer array)

    Господа, как узнать размер массива?
    Результат консоли.

    apple is fruit
    orange is fruit
    grape is fruit
    banana is fruit
    UW1�VS�u������ is fruit



    apple is FRUIT
    orange is FRUIT
    grape is FRUIT
    banana is FRUIT
    UW1�VS�u������ is FRUIT

    Code:
    #include <stdio.h>
    #include <string.h>
    
    char* ser1(char* a[])
    {
        char **ptr = a;
        while(*ptr){
            printf("%s is fruit\n", *ptr);
            ptr++;
        }
        printf("\n\n\n");
    }
    char* ser2(char* a[])
    {
        for(a; *a != '\0';++a)
        {
            printf("%s is FRUIT\n", *a);
        }
    }
    
    int main()
    {
        char *fruit[] = {"apple","orange", "grape", "banana"};
        ser1(fruit);
        ser2(fruit);
    }

  2. #2
    ximera's Avatar

    Default Re: Размер массива указателей. (size of pointer array)

    Да никак в том то и прикол Си, передавай его вторым параметром. Ты можешь так по памяти ходить, и даже случайно форматнуть себе винт например, "веревка достаточной длины" в общем.
    Чтобы избегать ошибок, надо набираться опыта; чтобы набираться опыта, надо делать ошибки. © Лоренс Питер

    Неизбежное прими достойно. © Сенека Луций Анней

    Господи... храни сумасшедших. © Сумасшедший Фрэнки

  3. #3
    JKornev's Avatar

    Default Re: Размер массива указателей. (size of pointer array)

    Если размер массива не задан в текущей функции, то никак. Однако часто поступают так: последний элемент массива, к примеру указателей, устанавливают в 0, в вашем случае необходимо сделать так:
    Code:

    #include <string.h>
    #include <stdio.h>

    void ser1(char* a[])
    {
    char **ptr = a;
    while(*ptr){
    printf("%s is fruit\n", *ptr);
    ptr++;
    }
    printf("\n\n\n");
    }
    void ser2(char* a[])
    {
    for(a; *a != 0;++a)
    {
    printf("%s is FRUIT\n", *a);
    }
    }

    int main()
    {
    char *fruit[] = {"apple","orange", "grape", "banana", 0};
    ser1(fruit);
    ser2(fruit);
    }
    High tech, low life

  4. #4

    Default Re: Размер массива указателей. (size of pointer array)

    Quote Originally Posted by JKornev View Post
    Если размер массива не задан в текущей функции, то никак. Однако часто поступают так: последний элемент массива, к примеру указателей, устанавливают в 0, в вашем случае необходимо сделать так:
    Code:

    #include <string.h>
    #include <stdio.h>

    void ser1(char* a[])
    {
    char **ptr = a;
    while(*ptr){
    printf("%s is fruit\n", *ptr);
    ptr++;
    }
    printf("\n\n\n");
    }
    void ser2(char* a[])
    {
    for(a; *a != 0;++a)
    {
    printf("%s is FRUIT\n", *a);
    }
    }

    int main()
    {
    char *fruit[] = {"apple","orange", "grape", "banana", 0};
    ser1(fruit);
    ser2(fruit);
    }
    Спасибо решение подошло.

Closed Thread

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:24
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org