Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите с unsafe и адресамиё

33K
07 мая 2008 года
Padavan1
15 / / 07.05.2008
Привет всем!
стоит такая задача: пройти по строке дальше ее конца, пытаюсь ее решить следующим способом

 
Код:
string chSignedMes="ghghg";
unsafe
{
       char* charPtr = &chSignedMes[0];
       for (int i = 0; i < 20; i++)
       {
             /*....*/
              charPtr++;
       }
}

но компилятор ругается на попытку получить адрес от операции
(Cannot take the address of the given expression)

подскажите что делать?
6.6K
07 мая 2008 года
Ordos
105 / / 02.11.2007
Нашёл. Вот этот работает.
 
Код:
unsafe
{
    fixed (char* c = &"СТРОКА".ToCharArray()[0])
        for (int i = 0; i < 1000; i++)
            Console.Write(c);
}
33K
08 мая 2008 года
Padavan1
15 / / 07.05.2008
спасибо, оно действительно компилицо)
но есть такое ощущение, что предполагаемой информации там нет...
грешу на "управляемую кучу" или как там ее правильно зовут...

ЗЫ плюсик не поставил, тк не нашел куда)

Уже нашел)
5
08 мая 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: Padavan1
Привет всем!
стоит такая задача: пройти по строке дальше ее конца,


Сомнительная цель....
Корректное решение:

Код:
unsafe static void Main(string[] args) {
    string s = "My sample string.";
    fixed (char* ps = s) {
        char* c = ps;
        for (int i = 0; i < s.Length + 5; ++i) {
            Console.WriteLine(*c);
            ++c;
        }
    }
    Console.ReadKey();
}
System.String во многом напоминает дельфийский string (правильнее конечно WideString).
Указатель на стрингу - это указатель на первый символ строки, за последним символом строки находится #0 "нуль символ".
Длина строки (System.Int32) хранится аккуратно перед первым символом.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог