assignment makes pointer from integer without a cast

0

Witam, napisałem kod i wyskakuje mi warning. Co jest niepoprawnie? Oczywiście program dziala prawidłowo ale z ostrzeżeniem.
do wskaźnika chce przypisać wartość:

int i=0;
unsigned int* id[10];
int l_kl = 10;
for(i=0; i<10; i++)
{
id[i] = i; //assignment makes pointer from integer without a cast
}

Pozdrawiam

3

Próbujesz do wskaźnika przypisać liczbę.
Dokładnie do typu unsigned int* próbujesz wczytać liczbę typu int.

0

Dokładnie tak, potrzebuje tablicy wskaźników by przesyłać to na wątki, a samą tablice potrzebuje wypełnić tablicami.
Tu jest cały kod, jak proponował byś to zmienić aby było właściwie? Przesłać zwykłą tablice?

#include<stdlib.h>
#include<stdio.h>
#include <time.h>
#include<pthread.h>
#include<unistd.h>
void* funkcja(void  *ii);
pthread_mutex_t muteks = PTHREAD_MUTEX_INITIALIZER;
int main()
{
int i=0;
pthread_t watek[10];
unsigned int* id[10];
int l_kl = 10;
for(i=0; i<10; i++)
{
id[i] = i;
}

  for(i=0;i<l_kl;i++){
    pthread_create(&watek[i], NULL, funkcja, &id[i]); 
  }
  for(i=0;i<l_kl;i++){
    pthread_join( watek[i], NULL);
}


return 0;
}

void* funkcja(void  *ii)
{
int i=0;
int wartosc = *((int*)ii);
pthread_mutex_lock(&muteks);
for(i=0; i<5; i++)
{
printf("watek %d ---- %d\n",wartosc,i);
usleep(300000);
}
pthread_mutex_unlock(&muteks);



return NULL;
}; 
3

Każdy element tablicy id to wskaźnik unsigned int* a ty przypisujesz do nich liczby. Wskaźniki co prawda generalnie są liczbami, ale bardzo konkretnymi, określającymi lokalizacje czegoś w pamięci komputera. Przypisanie tam jakiejś liczby, szczególnie 0,1,2,3... raczej nie jest zbyt sensownym pomysłem.
Czy ty aby nie chcesz do każdego z tych wskaźników alokować pamięci? o_O

1 użytkowników online, w tym zalogowanych: 0, gości: 1