У меня есть два вопроса о языке c - PullRequest
0 голосов
/ 28 апреля 2011

1) мы можем определить пустой указатель?
такие как void * pointer;
это разрешено в C? что такое пустой указатель?
2) Я всегда слышу о глобальной переменной, но не знаю, как определить глобальную переменную, я имею в виду, где определить глобальную переменную? в начале файла или как?

Ответы [ 8 ]

2 голосов
/ 28 апреля 2011
  1. Да.Пустой указатель - это указатель на память, где мы не указали, какой тип находится в этой ячейке памяти.

  2. Определите их вне какой-либо функции или класса.

0 голосов
/ 08 февраля 2018

Глобальные переменные: глобальная переменная является переменной, и она может быть доступна и изменена (если требуется) в вашей программе.

Пустые указатели: эти указатели могут быть наложены на любой тип.

0 голосов
/ 28 апреля 2011

Вы можете иметь указатели void, но вы должны привести их к указателю соответствующего типа, прежде чем сможете разыменовать их.

int someFunction(type_t type, void *ptr)
{
   type_one_t *t1_ptr = NULL;
   type_two_t *t2_ptr = NULL;
   common_t *c_ptr = NULL;

   if(type == TYPE_1){
     t1_ptr = (type_one_t*)ptr;
     c_ptr = t1_ptr->pcommon;
   }
   else if(type == TYPE_2){
     t2_ptr = (type_two_t*)ptr;
     c_ptr = t2_ptr->pcommon;
   }
   else{
     return INVALID_VAL;
   }

   return c_ptr->someValue;
}

Глобальные переменные объявляются вне функции.

int a;

void func_1(int b)
{
  int k = someVal();
  a = k + b;
}

void func_2(int c)
{
  a = a + c;
}

здесь a является глобальным.

0 голосов
/ 28 апреля 2011

Что касается глобальных переменных, в C нет "глобальной" переменной, хотя вы можете определить переменную внутри модуля вне любого из методов и затем ссылаться на нее в других модулях, вызывая external.

Пустой указатель просто указывает на некоторые данные неизвестного типа.

0 голосов
/ 28 апреля 2011

1) конечно можно.указатель void является необработанным указателем.они используются для ссылки на адрес памяти, где хранятся данные неизвестного типа.

2) каждая переменная, объявленная вне функции, является глобальной.Чтобы поделиться им с другими модулями, используйте ключевое слово extern.(edit: конечно, в C переменная должна быть объявлена ​​до того, как она будет использована. Поэтому в начале вашего модуля должна быть объявлена ​​«действительно» глобальная переменная, чтобы иметь возможность использовать ее в каждой функции)

0 голосов
/ 28 апреля 2011

Глобальная переменная AC - это просто переменная, определенная вне какой-либо функции.Пример:

int xyz; /* Global */
int main() {
    return 1;
}
0 голосов
/ 28 апреля 2011

Пустой указатель - это указатель на любой тип.Указатель void может быть приведен к любому типу, а указатель любого типа может быть приведен к указателю void.

Глобальная переменная - это переменная, доступная для всех функций в вашей программе (тогда каклокальная переменная доступна только внутри функции, которую она создала).Глобальная переменная может быть объявлена ​​вне любой функции, хотя обычно они объявляются непосредственно перед функцией main ().Группы глобальных переменных могут быть определены сразу.

0 голосов
/ 28 апреля 2011

i) В C разрешены пустые указатели, они по существу представляют необработанный адрес (т. Е. Нет определения типа).

ii) Глобальная переменная - это переменная, определенная вне области действия функции, например, вверхняя часть модуля переменного тока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...