string chSignedMes="ghghg";
unsafe
{
char* charPtr = &chSignedMes[0];
for (int i = 0; i < 20; i++)
{
/*....*/
charPtr++;
}
}
Помогите с unsafe и адресамиё
стоит такая задача: пройти по строке дальше ее конца, пытаюсь ее решить следующим способом
Код:
но компилятор ругается на попытку получить адрес от операции
(Cannot take the address of the given expression)
подскажите что делать?
Код:
unsafe
{
fixed (char* c = &"СТРОКА".ToCharArray()[0])
for (int i = 0; i < 1000; i++)
Console.Write(c);
}
{
fixed (char* c = &"СТРОКА".ToCharArray()[0])
for (int i = 0; i < 1000; i++)
Console.Write(c);
}
но есть такое ощущение, что предполагаемой информации там нет...
грешу на "управляемую кучу" или как там ее правильно зовут...
ЗЫ плюсик не поставил, тк не нашел куда)
Уже нашел)
Цитата: 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();
}
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();
}
Указатель на стрингу - это указатель на первый символ строки, за последним символом строки находится #0 "нуль символ".
Длина строки (System.Int32) хранится аккуратно перед первым символом.