#include #include #include #define MYDEF a=a+1 #define MAX 5 int globalStuff = 1000; struct mycomplex { int re; int im; }; typedef struct mycomplex tcplx; union myunion { int i; char d; }; struct o { int select; union myunion u; }; void myf(int *a) { *a = 50; } int myf2(int a) { a = 50; return a; } static int x=66; int* mypint() { return &x; } tcplx *create_cplx(int re, int im) { tcplx *cp = (tcplx*) malloc (sizeof(tcplx)); // memset(cp, 0, sizeof(tcplx); cp->re = re; cp->im = im; return cp; } int main(void) { int a = 2; MYDEF; char c = 'c'; double d = 3.14; struct mycomplex cplx; cplx.re = 1; cplx.im = 2; tcplx cplx2; cplx2 = cplx; printf("Variable a=%d %c %g %lu\n", a, c, d, sizeof(a)); printf("Variable cplx.re=%d cplx.im=%d\n", cplx.re, cplx.im); cplx.im = cplx.re + a; printf("Variable cplx.re=%d cplx.im=%d\n", cplx.re, cplx.im); printf("Variable cplx2.re=%d cplx2.im=%d\n", cplx2.re, cplx2.im); union myunion u; u.d=10.2; printf("Size of union %lu Size of struct %lu\n", sizeof(union myunion), sizeof(struct mycomplex)); int arr[MAX] = {1, 2, 3, 4, 5}; int arr2[MAX]; printf("arr="); for(int i=0; i < MAX; i++) { printf("%d ", arr[i]); arr2[i] = arr[i] + 2; } printf("\n"); arr[3] = 10; printf("arr2="); for(int i=0; i < MAX; i++) { printf("%d ", *(arr2+i)); } printf("\n"); int h = 100; printf("h = %d\n", h); *(arr2+2) = 10; printf("arr2[2] = %d\n", arr2[2]); int *pa = &a; int **ppa = &pa; printf("a=%d pa=%p ppa=%p\n", a, pa, ppa); printf("*pa = %d\n", *pa); a = 100; printf("*pa = %d\n", *pa); *pa = 1000; printf("**ppa = %d\n", **ppa); tcplx *pcplx = &cplx2; printf("Variable pcplx->re=%d pcplx->im=%d (*pcplx).im=%d\n", pcplx->re, pcplx->im, (*pcplx).re); pcplx->im = 100; printf("Variable cplx2.re=%d cplx2.im=%d\n", cplx2.re, cplx2.im); // myf(&a); a = myf2(a); printf("a=%d\n", a); char *str = "mystring"; printf("str=%s len=%lu\n", str, strlen(str)); printf("a as casted pointer to float: %f\n", *((float*)pa)); printf("a as float: %f\n", (float)a); printf("a as casted pointer to char: %c\n", *((char*)pa)); a = 65; printf("a as casted pointer to char: %c\n", *((char*)pa)); printf("a as hex: %x\n", a); void *vp = (void*)&a; printf("a=%d\n", *((int*)vp)); printf("x=%d\n", *mypint()); printf("x=%d\n", x); tcplx *cp = create_cplx(99, 88); printf("Variable cp->re=%d cp->im=%d\n", cp->re, cp->im); printf("Pointer to cp = %p &cplx2=%p\n", cp, &cplx2); //free(cp); //printf("Variable cp->re=%d cp->im=%d\n", cp->re, cp->im); //printf("Pointer to cp = %p &cplx2=%p\n", cp, &cplx2); return 0; }