| 
	
 | 
 
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | 6 | (покажи всички)
           
             
               
               
                 
                   | 
                   Тема
                    | 
                     защо "абвгз" е char*, а не const char*? 
 | 
 
 |  
| Автор | 
zaphod (мракобес) |  
| Публикувано | 13.01.10 16:33 |  
             |  
           | 
            
           
  все едно 345 да е инт а не конст инт бах мааму!
  
 
 
 NE SUTOR ULTRA CREPIDAM
           
  
             |   |  
           
             
               
               
                 
                   | 
                   Тема
                    | 
                     Re: защо "абвгз" е char*, а не const char*? 
[re: zaphod]
 | 
 
 |  
| Автор | 
portal (старо куче) |  
| Публикувано | 13.01.10 16:50 |  
             |  
           | 
            
           
  Възможно ли е да е заради енкодинга, в смисъл да е сигурно, че ще го "побере"...
  Revolution, the only solution,
 The armed response of an entire nation
 System of a Down P.L.U.C.K.
           
  
             |   |  
           
             
               
               
                 
                   | 
                   Тема
                    | 
                     Re: защо "абвгз" е char*, а не const char*? 
[re: zaphod]
 | 
 
 |  
| Автор | 
Pekoнcтpykтop (дарвинист) |  
| Публикувано | 13.01.10 17:16 |  
             |  
           | 
            
           
  Верно ли не знаеш? 
  
           
  
             |   |  
           
             
               
               
                 
                   | 
                   Тема
                    | 
                     Re: защо "абвгз" е char*, а не const char*? 
[re: Pekoнcтpykтop]
 | 
 
 |  
| Автор | 
Om_ (eyeful) |  
| Публикувано | 13.01.10 17:38 |  
             |  
           | 
            
           
  И аз не знам. Ти кажи!
 Според мен трябва да е константа.
 Обаче асоциацията с инт е тотално погрешна
 понеже char* e низ, а не единичкна промелива.
 Сега каква беше разликата - имаше значение къде стои const
 понеже const char* не е същото като char* const.
 В единият случай не се променя адресът, а в другият - записът.
 Редактирано от Om_ на 13.01.10 17:43. 
           
  
             |   |  
           
             
               
               
                 
                   | 
                   Тема
                    | 
                     Re: защо "абвгз" е char*, а не const char*? 
[re: zaphod]
 | 
 
 |  
| Автор | 
Colombino (програмист) |  
| Публикувано | 13.01.10 20:58 |  
             |  
           | 
            
           
  По исторически причини. Много код нема да се компилира ако го променят. Нещо повече, навремето това активно се ползваше и литералите се променяха.
 В интерес на истината дори не е const char *, а char[6] и можеш да му зимаш sizeof вместо да ползваш strlen.
  System Doctor Error:
 Your girlfriend is pregnant.
 (A)bort, (M)arry, (I)gnore?_
           
  
             |   |  
           
             
               
               
                 
                   | 
                   Тема
                    | 
                     Re: защо "абвгз" е char*, а не const char*?
[re: Colombino]
 | 
 
 |  
| Автор | 
portal (старо куче) |  
| Публикувано | 13.01.10 22:29 |  
             |  
           | 
            
           
  Колко съм бил далеч от истината :) така е като се вра при ИП (истинските порграмисти )  :)))
  Revolution, the only solution,
 The armed response of an entire nation
 System of a Down P.L.U.C.K.
           
  
             |   |  
           
             | 
               
                |  
           | 
            
           
  "абвгз" си е константа, кое как сочи към нея е друг въпрос. Май е ундефинед да се ръчка където не си алокейтнал (точен размер компиле или сгоден малок, ама кой го ебе си днешно време така или иначе :).
  Teh quk bron fox jums over teh lazy dog...
 
           
  
             |   |  
           
             | 
               
                |  
           | 
            
           
  сбъркал си в подписа си "teh" :-P
  
           
  
             |   |  
           
             | 
               
                |  
           | 
            
           
  >> "абвгз" си е константа, кое как сочи към нея е друг въпрос. 
 
 Глуопсти говориш. Немаш право с неконстантен пойнтер да сочиш към константа без да конст-кастнеш преди това. А в случая можеш. Разрешават ти на честна дума, щото ако се опиташ да присвоиш, в 99% от случаите компилаторът го е сложил в памет дето не можеш да пишеш и гърмиш мъжката.
 
 От друга страна си прав - недефинирано е поведението, но това ние много добре го знаем, не това беше въпросът. Човекът питаше що типът на литерала не е константен, след като литералът е фактическа константа.
 Отговорът е, че е пълно със стар код, където има прототип от типа
 
 OldAPI(char *c);
 
 което ще престане да се компилира, щото се ползва така
 
 OldAPI("абвгз");
  System Doctor Error:
 Your girlfriend is pregnant.
 (A)bort, (M)arry, (I)gnore?_
           
  
             |   |  
           
             | 
               
                |  
           | 
            
           
  очевидно е че е константа, точно затова ме шокира че предадено на функция приемаща  променяем чар* минава. ако функцията наистина иска да пипа по стринга си гръмва.
  
 
 
 NE SUTOR ULTRA CREPIDAM
           
  
             |   |  
  |   
 
 
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | 6 | (покажи всички)
 |  
 |   
 |