Вопросы с тегом «pointers»

Тип данных, который «указывает» на другое значение, хранящееся в памяти. Переменная-указатель содержит адрес памяти некоторой другой сущности (переменная или функция или другая сущность). Этот тег следует использовать для вопросов, связанных с использованием указателей, а не ссылок. Наиболее распространенными языками программирования, использующими указатели, являются C, C ++, Go и языки ассемблера. Используйте определенный языковой тег. Другими полезными тегами являются метод, функция, структура и т. Д., Описывающие использование указателя.


21
Почему нулевой адрес используется для нулевого указателя?
В C (или C ++, если на то пошло) указатели являются особенными, если они имеют нулевое значение: я советую устанавливать указатели на ноль после освобождения их памяти, потому что это означает, что освобождение указателя снова не опасно; когда я вызываю malloc, он возвращает указатель с нулевым значением, если не может …
121 c++  c  memory  pointers 

11
Почему в связанных списках используются указатели вместо хранения узлов внутри узлов
Я раньше много работал со связанными списками на Java, но я новичок в C ++. Я отлично использовал этот класс узла, который мне дали в проекте. class Node { public: Node(int data); int m_data; Node *m_next; }; но у меня был один вопрос, на который я не очень хорошо ответил. …


10
Создать указатель на двумерный массив
Мне нужен указатель на статический двумерный массив. Как это сделать? static uint8_t l_matrix[10][20]; void test(){ uint8_t **matrix_ptr = l_matrix; //wrong idea } Я получаю всевозможные ошибки, например: предупреждение: присваивание из несовместимого типа указателя индексируемое значение не является ни массивом, ни указателем ошибка: недопустимое использование гибкого элемента массива
120 c  arrays  pointers 

9
Указатели C: указывающие на массив фиксированного размера
Этот вопрос уходит к гуру Си: В C можно объявить указатель следующим образом: char (* p)[10]; .. что в основном означает, что этот указатель указывает на массив из 10 символов. При объявлении подобного указателя замечательно то, что вы получите ошибку времени компиляции, если попытаетесь назначить указатель на массив другого размера …
120 c  pointers  size 

15
Почему по умолчанию указатели не инициализируются значением NULL?
Может кто-нибудь объяснить, почему указатели не инициализируются NULL? Пример: void test(){ char *buf; if (!buf) // whatever } Программа не будет входить в if, потому что bufне является нулем. Я хотел бы знать, зачем и в каком случае нам нужна переменная с мусором, особенно указатели, обращающиеся к мусору в памяти?

10
Повреждает ли память (ptr), где ptr - NULL?
Теоретически могу сказать, что free(ptr); free(ptr); - это повреждение памяти, поскольку мы освобождаем уже освобожденную память. А вдруг free(ptr); ptr=NULL; free(ptr); Поскольку ОС будет вести себя неопределенным образом, я не могу получить фактический теоретический анализ происходящего. Что бы я ни делал, это повреждение памяти или нет? Действителен ли освобождение нулевого …



3
Почему этот код имеет segfault в 64-битной архитектуре, но нормально работает в 32-битной?
Я наткнулся на следующую загадку C: В: Почему следующая программа имеет segfault на IA-64, но нормально работает на IA-32? int main() { int* p; p = (int*)malloc(sizeof(int)); *p = 10; return 0; } Я знаю, что размер intна 64-битной машине может отличаться от размера указателя ( intможет быть 32 бита, …

6
Что делает непредсказуемым такое использование указателей?
В настоящее время я изучаю указатели, и мой профессор привел этот фрагмент кода в качестве примера: //We cannot predict the behavior of this program! #include <iostream> using namespace std; int main() { char * s = "My String"; char s2[] = {'a', 'b', 'c', '\0'}; cout << s2 << endl; …
108 c++  pointers 

2
Приемник значения против приемника указателя
Для меня очень непонятно, в каком случае я хотел бы использовать приемник значения вместо того, чтобы всегда использовать приемник указателя. Резюмируя из документов: type T struct { a int } func (tv T) Mv(a int) int { return 0 } // value receiver func (tp *T) Mp(f float32) float32 { …
108 function  pointers  go 

2
«<Тип> - это указатель на интерфейс, а не на интерфейс».
Уважаемые коллеги-разработчики! У меня возникла эта проблема, которая мне кажется немного странной. Взгляните на этот фрагмент кода: package coreinterfaces type FilterInterface interface { Filter(s *string) bool } type FieldFilter struct { Key string Val string } func (ff *FieldFilter) Filter(s *string) bool { // Some code } type FilterMapInterface interface …
108 pointers  go  interface 

2
Могу ли я вызвать memcpy () и memmove () с нулевым «количеством байтов»?
Нужно ли мне случаи лечат , когда я actully не имею ничего перемещать / копировать с memmove()/ memcpy()в крайних случаях int numberOfBytes = ... if( numberOfBytes != 0 ) { memmove( dest, source, numberOfBytes ); } или мне просто вызвать функцию без проверки int numberOfBytes = ... memmove( dest, source, …
104 c++  c  pointers  memcpy  memmove 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.