cDLEON
Онанист РНРСlub
Чистый СИ. Указатели.
Захотелось отвлечься от ПХП на денёк.
Решил опять погрызть и покурить мануалы по СИ.
Только вот ни хрена я не понимаю работу с указателями.
Вот пару примеров:
Почему char *p = "blabla"; работает, а если я начинаю делать похожие манипуляции в своей функции, у меня происходит переполнение.
Вот в мануале нарыл ещё одну непонятную хрень:
Да и вообще не понятно. Как с этой дурацкой памятью работать. Вечно какие то переполнения и проч. Вроде бы делаю:
По логике вещей, я получаю разность указателей. Это тоже указатель, значит память выделять не нужно. Но после компилирования этого кусочка кода - опять переполнения...
Извеняюсь за такие вопросы. Всё что нашёл в инете больше смешило, чем учило.
Во например...Как вам..."Числа с плавающей запятой".
Поэтому начал эксперементировать с ними сам....
Захотелось отвлечься от ПХП на денёк.
Решил опять погрызть и покурить мануалы по СИ.
Только вот ни хрена я не понимаю работу с указателями.
Вот пару примеров:
Почему char *p = "blabla"; работает, а если я начинаю делать похожие манипуляции в своей функции, у меня происходит переполнение.
Вот в мануале нарыл ещё одну непонятную хрень:
Чйо это значед? Неужели в каждом последующем байте по еденичке содержится?Операции над указателями не ограничиваются только операциями ++ или --. К указателям можно прибавлять некоторое целое или вычитать целое Пусть, например, величина x=2000 и указатель этого числа p указывает на целое число. Пусть первоначально значение указателя p=1245064 в десятичной системе счисления. Тогда в результате выполнения оператора p=p+5 значение указателя будет p=1245084. Действительно, это верно, поскольку целочисленная величина типа int в 32-битном представлении занимает 4 байта, отсюда p=1245064 + 4*5 = 1245084.
Да и вообще не понятно. Как с этой дурацкой памятью работать. Вечно какие то переполнения и проч. Вроде бы делаю:
Код:
void
func(char *str) {
char *str2,*str3,*str4;
*str2=++*str;
*str3=*(str+2);
*str4=*str3-*str2;
printf("%p",str4);
}
int
main () {
char *str="Asd";
func(str);
getch();
};
Извеняюсь за такие вопросы. Всё что нашёл в инете больше смешило, чем учило.
Во например...Как вам..."Числа с плавающей запятой".
