реклама на сайте
подробности

 
 
> c++ *указатель=*указатель
elusive
сообщение Apr 12 2011, 14:39
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



буду страшно благодарен коли кто знает подскажет... свои идеи кончились sad.gif

есть 2 указателя на char.
char *expression, *temp;

нужно по очереди присваивать значения строки expression строке temp, если это не пробел. делаю так:
while (*expression!='\0')
{
if (*expression!=' ') {*temp = *expression; temp++;}
expression++;
}

компилятор съедает, а в винде вылазит ошибка, что temp используется до того как был проинициализирован....

как грамотно скопировать значение ячейки памяти через указатели???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
elusive
сообщение Apr 12 2011, 16:18
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



rezident, aaarrr, sergeeff, спасибо!! теперь запомню про инициализацию указателя.

все работает. я в общем сделал так:

char* temp_expression;
temp_expression = new char(strlen(expression));
...
*(temp_expression+i) = *expression;

i соответственно наращиваю.


p.s. Idle, у вас совсем не "говорящее" имя =)

upd хм странно, работает только если символов <=16...
upd лол какой-то...
если добавить не играющее большой роли printf

str = new char(strlen(expression));
printf("%d\n", strlen(expression));

работает с любой длиной %)))))

Сообщение отредактировал elusive - Apr 12 2011, 16:38
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 12 2011, 16:56
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(elusive @ Apr 12 2011, 20:18) *
rezident, aaarrr, sergeeff, спасибо!! теперь запомню про инициализацию указателя.

все работает. я в общем сделал так:

char* temp_expression;
temp_expression = new char(strlen(expression));
...
*(temp_expression+i) = *expression;

i соответственно наращиваю.


p.s. Idle, у вас совсем не "говорящее" имя =)

upd хм странно, работает только если символов <=16...
upd лол какой-то...
если добавить не играющее большой роли printf

str = new char(strlen(expression));
printf("%d\n", strlen(expression));

работает с любой длиной %)))))

А это все от того, что полезно самому книжки читать, а не только на советы надеятся.

Что делает
Код
char *pp = new char(80);


выделяет 1 байт в куче и инициирует его значением 80.

Вы ведь совсем другого хотели, не правда ли? Вам надо выделить область памяти длиной 80 байт. Тогда это так:

Код
char *pp = new char[80];


Потому и не работает.
Go to the top of the page
 
+Quote Post
elusive
сообщение Apr 13 2011, 02:49
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



Цитата(sergeeff @ Apr 12 2011, 22:56) *
А это все от того, что полезно самому книжки читать, а не только на советы надеятся.

Что делает
Код
char *pp = new char(80);


выделяет 1 байт в куче и инициирует его значением 80.

Вы ведь совсем другого хотели, не правда ли? Вам надо выделить область памяти длиной 80 байт. Тогда это так:

Код
char *pp = new char[80];


Потому и не работает.


да, да. полностью согласен.
на счет скоб сам себя запутал.
искренне балгодарен, sergeeff
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01425 секунд с 7
ELECTRONIX ©2004-2016