Цитата
...Неужели нет никакой возможности получить сам адрес той строки, на которую ссылается пойнтер...
поинтер и есть переменная, содержащая адрес
Код
// Работа #0 - "Инициализация"
typedef unsigned char byte;
// можно так
byte myString[]="My string\n"; // это Ваша строка
// или так
byte bigString[20]="My bigest string\n"; // и это Ваша строка больше
//typedef byte* pStr;
// это указатель на строку 'myString'
byte* pMyString; // здесь мы будем хранить адрес строки 'myString'
// а это указатель на строку 'bigString'
byte* pBigString; // а здесь адрес строки 'bigString'
// как Вы поняли размеры указателей одинаковы, и не зависят от длин строк
/ Теперь работа #1 - "Инициализация (поручение адресов переменных) указателей"
// получаем адрес строки 'mystring'
pMyString=&myString[0]; // обратите внимание на амперсанд (& - это амперсанд, оператор взятия адреса)
// получаем адрес строки 'bigString'
pBigString=&bigString[0]; // значение номера элемента массива может быть и не нулевым
// Теперь работа #2 - "Копирование указателей"
// получаем адрес пятого символа в строке 'bigString'
pBigString=&bigString[4];
// присваиваем указатель указателю
pMyString=pBigString; // теперь они оба являются одинаковыми ссылками на одну и туже строку 'igest string\n'
// Теперь работа #3 - "Присвоение значение через указатель"
// сначала берем адрес - это уже Вы умеете
pMyString=&myString[6];
// затем присваиваем значение переменной, ссылкой на которую - есть указатель
*pMyString='O'; // теперь переменная 'mуString' содержит 'My strOng'
// обратите внимание на звездочку (* - звездочка, оператор взятия значения)
// а теперь присваиваем значению одной переменной, значение другой.
*pMyString=*pBigString;// Теперь переменная 'mуString' снова содержит 'My string'
// Выводы:
// - все четыре примера это была относительная адресация, а пример от rezident, это косвенная адресация;
// - Си - это высокоуровневый ассемблер (при хорошем компиляторе :) ), только нужно немного перестроиться;
// Желаю настойчивости и удачи, тогда успех Вас не покинет! :);
Сообщение отредактировал ih_ - Oct 26 2010, 13:23