1) зацените код код ниже. Ф-ция f должна изменить переданную ей строку. У меня есть обычная строка (char s[10]), и я передаю ее адрес (&s) в f. Мне выдается segmentationfault. Что я не так сделал? void f(char *s){ strcpy(s,"abc"); return; } int main(){ char s[10]; f(&s); printf("%s\n",s); } Кстати, когда я меняю char s[10] на char *s, а f(&s) на f(s), то программа мне выводит "abc", но потом всеравно пишет segmentationfault. Я знаю, что это можно реализовать создав отдельно указатель и указав им на char s[10], но мне интересно, можно ли это сделать другими (см. выше) способами
2)Можно ли передать в ф-цию в качестве аргумента битовое поле, и если можно то как? Нижележащий способ не подходит: void f(int i,int j){ ... } int main(){ struct{int i:1;int j:1}field; f(field.i,field.j); } Надо чтобы внутри самой ф-ции f поля оставались размером по одному биту, я не по int'у
3)у меня есть char s[4],*sp; sp=s; Когда я пишу strcpy(sp,"ab"); printf("%s %d\n",sp,strlen(sp)); то все хорошо, но когда я заменяю strcpy(sp,"ab"); на *(sp++)='a';*(sp++)='b';*(sp++)='\0'; то мне вместо "ab 2" выводится " 0" - почему?