2014-12-22 1 views
0
typedef struct abc{ 

     int a; 
     char b; 

    }abc; 

    typedef abc bkl[1]; 
    . 
    . 
    . 

    blk b; 

b=shmat(shmid, NULL, 0); //This error that (Void *) to blk 
           //But anyway blk is pointer,it isnt ? 

blk *b; 
b=shmat(shmid, NULL, 0); //This is correct, why? b pointor to pointer 

Спасибо.test.c: 51: 4: ошибка: несовместимые типы при назначении типа «blk from type» void * '

+0

Не печатать типы массивов typedef. Все, что вы получаете, это такая проблема. И я бы даже не указала typedef-to-whatever. Запишите все '*' в объявление переменных, и это будет намного проще. – Jens

ответ

4
blk b; 

так же, как:

abc b[1]; 

b не является указателем в том смысле, что вы используете его.

b = shmat(shmid, NULL, 0); 

неверен, потому что вы не можете назначить указатель на массив. Это неправильно, так как неправильно.

int arr[3]; 
arr = malloc(sizeof(int)*10);