2013-05-07 4 views
-2

мне интересно, в чем смысл следующего выражения:Указатель присваивается нескольким переменным

unsigned char *buff_p = txBuffer, hdrFlags, msgType; 
+3

Собственно, это только одно задание. Остальные два - это просто неинициализированные объявления переменных. –

+2

@KyleTrauberman: Как он может использовать 'unsigned char' в C#? – Cemafor

+0

не является * неправильным для C#? 'char * buff_p' будет в порядке,' char * buff_p' не подходит –

ответ

5

Эта строка объявляет три переменные и присваивает один из них.

Это так же, как

int a = 1, b, c; 

который является таким же, как

int b, c, a = 1; 

Выражаясь иначе, = имеет более высокий приоритет, чем ,.

+0

Каковы типы трех переменных? Это один указатель на символ и два символа, или три указателя? – Servy

+1

Все они одинаковы, 'unsigned char *'. – Cemafor

+0

Спасибо, это решает мой вопрос. – hsantana8

0

Линия выполняет только одно задание и объявляет две другие переменные.

unsigned char *buff_p = txBuffer, hdrFlags, msgType; 
// buff_p points to txtBuffer 
// other vars, they are of type char* 

Это похоже на char one, two, three; только с заданием на одной из объявленных переменных (я не использовал указатели для этого, так как там могут быть некоторые добавляют путаницы).

+0

Вы не можете иметь unsigned char в C#. Также я считаю, что * находится в неправильном месте. если бы он был char *, они были бы указателями на символы, но с пробелом делает его недействительным C# –

+0

@SimonHalsey кто-то изменил тег. Он был помечен как C/C++ минуту назад. – evanmcdonnal

+1

@SimonHalsey 'char * buff_p;' компилирует просто отлично для меня. – Servy

Смежные вопросы