Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Указател към масив?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9301
Страница 1 от 1

Автор:  RM [ Нед Авг 28, 2011 10:15 am ]
Заглавие:  Указател към масив?

unsigned char mes[]="Hello Word";
unsigned char *pmes;
pmes=&mes;

и това еднакво ли е (трябва да е еднакво, иначе съм го загазил);

pmes == (uint8_t *)"Hello Word"

и каде да намеря повече инфо за тези неща. :(
Компилатора приема това
Код:

   unsigned char mes[]="Hello Word";
   unsigned char *pmes;
   pmes=mes;
   if(pmes == ((uint8_t *)"Hello Word"));


Автор:  bateAz [ Нед Авг 28, 2011 10:41 am ]
Заглавие:  Re: Указател към масив?

pmes = mes;

Така трябва да бъде.
BTW, "бъркотия" се пише с две "с" : mess

Автор:  ps66 [ Нед Авг 28, 2011 11:05 am ]
Заглавие:  Re: Указател към масив?

RM написа:
unsigned char mes[]="Hello Word";
unsigned char *pmes;
pmes=&mes;

...
unsigned char mes[]="Hello Word";
unsigned char *pmes;
pmes=mes;
if(pmes == ((uint8_t *)"Hello Word"));

[/code]

Това:
if(pmes == ((uint8_t *)"Hello Word"))
ще е винаги FALSE (или поне в 99.99% от компилаторите/опциите им... но засега и това ти стига :))
ако се чудиш ... ЩО?
щото сравняваш адреси ... а не съдържание ... двата стринга ще са на различни адреси

за да сравняваш съдържание, ти трябва нещо дето прави това:
if(strcmp(pmes,"Hello Word"))==0)
и коeто ще е винаги TRUE

Автор:  RM [ Нед Авг 28, 2011 12:01 pm ]
Заглавие:  Re: Указател към масив?

Цитат:
Това:
if(pmes == ((uint8_t *)"Hello Word"))
ще е винаги FALSE (или поне в 99.99% от компилаторите/опциите им... но засега и това ти стига )
ако се чудиш ... ЩО?
щото сравняваш адреси ... а не съдържание ... двата стринга ще са на различни адреси


Да прав си ... но така компилатора ми връща "внимание" , когато не съм сигурен в типа дани. например че char не е еднакъв с uint8_t а е еднакъв с unsigned char.
(uint8_t *)"Hello Word") - Означава ли- инициализиране на указател съдържащ 8-битов знак (0-255) с приоритет в скобите (uint8_t *) към първия адрес на масив "Hello Word" , разбира се в случаи на предаване като аргумент във функция.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/