такой стиль не способствует понятности
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
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий