Хрестоматия по программированию на Си в Unix


           

такой стиль не способствует понятности


if(c) a = 1; else b = 1;

Предупреждение: такой стиль не способствует понятности программы и даже компактности ее кода.

#include <stdio.h>

int main(int ac, char *av[]){ int a, b, c; a = b = c = 0; if(av[1]) c = atoi(av[1]); *(c ? &a : &b) = 1; /* !!! */ printf("cond=%d a=%d b=%d\n", c, a, b); return 0; }



Каким образом инициализируются по умолчанию внешние и статические массивы? Инициализируются ли по умолчанию автоматические массивы? Каким образом можно присваивать значения элементам массива, относящегося к любому классу памяти?

Пусть задан массив int arr[10]; что тогда означают выражения:

arr[0] *arr *arr + 2 arr[2] *(arr + 2) arr &arr[2] arr+2

Правильно ли написано увеличение величины, на которую указывает указатель a, на единицу?

*a++;

Ответ: нет, надо:

(*a)++; или *a += 1;

Дан фрагмент текста:

char a[] = "xyz"; char *b = a + 1;

Чему равны

b[-1] b[2] "abcd"[3]

(Ответ: 'x', '\0', 'd' )

Можно ли написать a++ ? То же про b++ ? Можно ли написать b=a ? a=b ? (нет, да, да, нет)

Ниже приведена программа, вычисляющая среднее значение элементов массива

int arr [] = {1, 7, 4, 45, 31, 20, 57, 11}; main () { int i; long sum; for ( i = 0, sum = 0L; i < (sizeof(arr)/sizeof(int)); i++ ) sum += arr[i]; printf ("Среднее значение = %ld\n", sum/8) }

Перепишите указанную программу с применением указателей.

Что напечатается в результате работы программы?

char arr[] = {'С', 'Л', 'А', 'В', 'А'}; main () { char *pt; int i; pt = arr + sizeof(arr) - 1; for( i = 0; i < 5; i++, pt-- ) printf("%c %c\n", arr[i], *pt); }

Почему массив arr[] описан вне функции main()? Как внести его в функцию main() ?

Ответ: написать внутри main

static char arr[]=...

Можно ли писать на Си так:

f( n, m ){ int x[n]; int y[n*2]; int z[n * m]; ... }

Ответ: к сожалению нельзя (Си - это не Algol). При отведении памяти для массива в качестве размера должна быть указана константа или выражение, которое может быть еще во время компиляции вычислено до целочисленной константы, т.е. массивы имеют фиксированную длину.


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий