Массив указателей, указывающих на переменную структуры - PullRequest
0 голосов
/ 15 августа 2011

Я получаю ошибки для приведенного ниже кода как

(18): ошибка C2064: термин не оценивается для функции, принимающей 1 аргумент *

(18): ошибка C2227: слева от'-> str' должен указывать на класс / структуру / объединение / универсальный тип

(20): ошибка C2064: термин не оценивает функцию, принимающую 1 аргумент

(20): ошибкаC2227: слева от '-> str' должно указывать на класс / структуру / объединение / универсальный тип

Я объявил * p как указатель на структуру в главной функции.Я не мог определить, где я совершил ошибку. Разве * p похоже на * p + 0?

#include "stdafx.h"
#include<stdio.h>

int main()
{
    struct s1{
        char *str;
        struct s1 *ptr;
    };
    static struct s1 arr[]={{"Bangalore",arr+1},{"Hyderabad",arr+2},{"Kerala",arr}};
    struct s1 *p[3];
    int i;
    for(i=0;i<=2;i++)
        p[i]=arr[i].ptr;
    printf("\n%s"(*p)->str);
    printf("\n%s",(++*p)->str);
    printf("\n%s"((*p)++)->str);
    return 0;
}

1 Ответ

2 голосов
/ 15 августа 2011

В вашем коде отсутствуют запятые:

printf("\n%s"(*p)->str);
...
printf("\n%s"((*p)++)->str);

Должно было быть:

printf("\n%s", (*p)->str);
...
printf("\n%s", ((*p)++)->str);

Они просто отсутствуют в коде, который вы публикуете здесь, или в вашем реальном коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...