Tutorial #7 Summer 2005
sizeof int main() { char x; sizeof(x); sizeof(int); }
sizeof int main() { int a[10]; sizeof(a); }
Swap function void swap(int a, int b) { int tmp = a; a = b; b = tmp; }
pointers #include int main(void) { int x, *px; int y, *py ; px = &x; py = &y; scanf("%d%d", px, py); printf("x = %d, y = %d\n", *px, *py); return 0; }
pointers #include int main(void) { int *px; *px = 4; }
pointers #include int main(void) { int *px, x; px = &x; *px = 8; return 0; }
Swap function void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; }
Swap function void swap(int *a, int *b) { int *tmp = a; a = b; b = tmp; }
Swap function void swap(int *a, int *b) { int *tmp; *tmp = *a; *a = *b; *b = *tmp; }
simplify #include void swap(int*, int*); int gcd(int, int); void simplify(int*, int*); int main() { int a, b; if (scanf(“%d%d”, &a, &b) != 2) { printf(“Input error\n”); return 1; } printf(“Before simplification: ”%d / %d\n”, a, b); simplify(&a, &b); printf(“After simplification: “%d / %d\n”, a, b); return 0; }
simplify void simplify(int *num_p, int *denom_p) { int tmp = gcd(*num_p, *denom_p); *numerator_p /= tmp; *denominator_p /= tmp; } int gcd(int a, int b) { while(a != 0) { b %= a; swap(&a, &b); } return b; }
pointers #include int *p; void f() { int num = 25; p = # } int main(void) { f(); printf(“%d “, *p); return 0; }
pointers int main() { int *p; int x; … p = &x; p += 2; }
pointers int main() { char *p; char c; … p = &c; p += 2; }
Arrays and pointers p[k] = p + k p + k * sizeof(type)
Arrays and pointers int a[10]; int pa = a; /* int *pa = &a[0] */ pa = a; /* pa = &a[0] */ pa[i] (pa + i) (a + i) a[i]
Arrays and pointers #include int main() { int a[10]; int pa = a; *pa = &a[4]; pa++; a++; a = pa; return 0 ; }
Arrays and pointers #include #define N 100 int main() { int arr[N]; int *p = arr; int val;... *p++ = val; val = *--p; }
Pointer arithmetics #include int main(void) { int x = 1, y = 2, z[10]; int *ip, *iq; ip = &x; y = *ip; *ip = 0; ip = &z[0]; *ip = *ip + 10; y = *ip + 1; *ip += 1; ++*ip; (*ip)++; *ip++; iq = ip; ++*iq; }
sum_array #include #define N 10 int sum_array(int a, int n); int main() { int array[N]; for(i = 0; i < N; ++i) scanf( %d , &a[i]); printf( The sum of array is : %d\n , sum_array(array, N)); return 0 ; }
sum_array int sum_array(int a, int n) { int i, sum = 0; for(i = 0; i < n; ++i) sum += a[i]; return sum ; }
arrays for(j = 5; j < 8; ++j) printf( %d , a[j]); printf( \n ); pa = &a[3]; for(j = 0; j < 3; ++j) printf( %d , pa[j]); printf( \n ); for(j = 0; j < 3; ++j) printf( %d , (pa + j)); printf( \n ); fun_c(&a[3]); return 0 ; } void fun_c(int a[]) { int j; for (j = 0; j < 3; ++j) printf( %d , a[j]); } int main() { int a[10], j, pa; for(j = 0; j < 10; ++j) a[j] = j + 1;