LINUX.ORG.RU

Типы [С].


0

0

int i; char s[]="123" //задать значение строки s во время ее объявления можно. //s="321"; а так нельзя. Почему ? i=atoi(s); //преобразовывает строку s в целое число и i==123. Есть ли обратная функция, которая переводит целое число 123 в строку "123"?

anonymous

Re: Типы [С].

> задать значение строки s во время ее объявления можно. //s="321"; а так нельзя.

s[] это типа константного указателя. Если ты определишь char *s; то сможешь присвоить s = "123";

> Есть ли обратная функция, которая переводит целое число 123 в строку "123"?

snprintf

dilmah ★★★★★ ()
Ответ на: Re: Типы [С]. от dilmah

Re: Типы [С].

Вопрос:
А куда после такого присвоения будет указывать s?
На константную строку в сегменте .data?

eXire ★★ ()
Ответ на: Re: Типы [С]. от eXire

Re: Типы [С].

> А куда после такого присвоения будет указывать s? На константную строку в сегменте .data?

угу

dilmah ★★★★★ ()
Ответ на: Re: Типы [С]. от dilmah

Re: Типы [С].

если нужна неконстантная можешь сделать strdup("123")

dilmah ★★★★★ ()
Ответ на: Re: Типы [С]. от dilmah

Re: Типы [С].

> s[] это типа константного указателя. ...

6.9:	Someone explained to me that arrays were really just constant
	pointers.

A:	This is a bit of an oversimplification.  An array name is
	"constant" in that it cannot be assigned to, but an array is
	*not* a pointer, as the discussion and pictures in question 6.2
	should make clear.  See also questions 6.3 and 6.8. 

(c) comp.lang.c faq

uj2 ★★★ ()

Re: Типы [С].

Люди делятся на тех кто понимает указатели и тех кто не понимает.

eXOR ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.