Koda: |
int main()
int i,j,k, *ai; printf("%u \n",&i); ai = &i; printf ("%d \n",ai); *ai = &i; printf ("%d \n",ai); ai = &i; printf ("%d \n",*ai); |
Citiram: |
beagleboard-svetosavska:~$ ./a.e
3196853408 -1098113888 -1098113888 -1098113888 |
Koda: |
pData = (int*) calloc (i,sizeof(int)); |
gumby je napisal/a: |
Pri deklaraciji daš zvezdico tam, kjer hočeš imet kazalec in ne "navadno" spremenljivko (v tvojem primeru je to *ai).
V programu potem ai kaže na int, *ai je pa dereferenca tega kazalca, oz. sam int, na katerega kaže ai. Seveda mora ai kazat na nekaj, kar obstaja. Napišeš lahko "ai=&i", v tem primeru bo ai kazal na i, *ai bo pa vrednost v i. Upam, da ti je sedaj jasno, zakaj je samo zadnji printf() pravilen, in ne prvi |
ljudsko je napisal/a: | ||
vilko je napisal, da bi rad s pomočjo kazalca izpisal naslov spremenljivke, na katero kazalec kaže in ne vrednosti, ki je v njej. V zadnjem printf stavku pa počne ravno to-dereferencira kazalec in s tem dostopa do vrednosti spremenljivke, na katero kazalec kaže. Pravi printf stavek je torej drugi. PS.: vilko, poizkusi spremenljivko i inicializirati (int i=nekaj). In potem shrani naslov v ai in ga izpiši s pomočjo ai. Ugibam. |
Koda: |
struct list
{ int koda; char tekst[16]; } vnos, *listp, *listp1 ; |
Koda: |
listp = (struct list *)calloc(20, sizeof(struct list ) ); |
Koda: |
listp = (struct list *)malloc(sizeof(struct list ) * 20); |
Koda: |
listp1 = listp; |
Koda: |
listp1 = listp1 + i; |
Koda: |
listp1->koda = 10; |