Место нахождения значения перечисления в C

//for dynamic elements - if you want it in ng-repeat do below code

angular.forEach($scope.data, function(value, key) {
     //add new value to object
    value.new_url  = "your url";
});

 <div ng-repeat="row in data"><a ng-href="{{ row.url_content }}"></a></div>
13
задан James McNellis 20 June 2010 в 01:54
поделиться

6 ответов

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

enum myenum
{
    first_value,
    second_value
};

В этом случае недопустимо принимать адрес first_value . Причина этого в том, что first_value фактически нигде в памяти не существует ... это просто константа, фактически другое имя для числа 0 (из которого, конечно, вы также не можете взять адрес) .

Если, с другой стороны, вы имеете в виду, можете ли вы взять адрес переменной, объявленной как перечисление:

enum myenum x;
enum myenum *mypointer=&x;

, то это определенно возможно.

27
ответ дан 1 December 2019 в 17:20
поделиться

Перечисления используются для замены цепочек #define :

#define SUCCESS 0
#define LITTLE_ERROR 1
#define BIG_ERROR 2

Это можно заменить на:

enum
{
    SUCCESS,
    LITTLE_ERROR,
    BIG_ERROR
};

Значение перечисления, такое как SUCCESS , равно просто символ для целочисленной константы, которая не будет храниться нигде в памяти программы. Таким образом, нет смысла брать его адрес.

10
ответ дан 1 December 2019 в 17:20
поделиться

если у вас есть:

enum E {
    X, Y, Z
};

, то вы не можете брать адреса X, Y или Z, равно как и адреса 0, 1 или 2.

Однако, вы можете взять адрес экземпляра перечисления:

typedef enum  {
   X, Y, Z
} E;

int main() {
  E e;
  E * ep;
  ep = & e;
}
18
ответ дан 1 December 2019 в 17:20
поделиться

Имена значений для перечислений - это просто постоянные псевдонимы для целых чисел, поэтому бессмысленно пытаться получить их адрес. Конечно, вы можете просто взять адрес переменной enum .

5
ответ дан 1 December 2019 в 17:20
поделиться

Насколько я помню, перечисления в C - это просто целые числа. Это было бы похоже на указание на локальную переменную.

0
ответ дан 1 December 2019 в 17:20
поделиться

Пожалуйста, обратитесь к примеру ниже:

enum { FIRST,SECOND } var;

здесь

enum { FIRST,SECOND } var;

здесь сначала и второго являются постоянными макросами. Оператор & Оператор не будет работать, поскольку это не Хранится в любом месте памяти

, но для VAR будет назначена местоположение памяти, а оператор & можно использовать.

2
ответ дан 1 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: