pointer-arithmetic
Сегодня я просмотрел некоторый исходный код (это был пример файла, объясняющий использование программного фреймворка) и обнаружил много кода, подобного этому: int* array = new int[10]; // or malloc, who cares. Please, no language wars. This is applicable to both languages for ( int* ptr = &(array[0]); p...
Я получаю большую часть арифметики указателей, пока не увидел следующее: int x[5]; sizeof(x) // equals 20 sizeof(&x) // equals 4 -- sizeof(int)) До сих пор я придаю этому смысловое значение: указатель на N-элементный массив T - в случае &x Однако, когда мы делаем x+1, мы увеличиваем с sizeof(in...
Я просто пытался использовать указатель void на целочисленный массив, я пытался увидеть, могу ли я распечатать массив обратно, приведя его обратно в int. Но это дает мне некоторую случайную ценность. Можете ли вы сказать мне, где я ошибаюсь? #include<stdio.h> #include<stdlib.h> int main(){ i...
Я работаю с указателем на структуру. Я хочу знать, возможно ли перемещение непосредственно в определенную позицию без использования оператора ++. #include <stdio.h> #include <stdlib.h> #define ARRAY_SIZE 10 struct dummy{ int id; char buffer[10]; }; typedef struct dummy dummy_struct; ...
Как указывает Джоэл в переполнение стека подкаст #34, в Язык Программирования C (aka: K & R), есть упоминание об этом свойстве массивов в C:a[5] == 5[a] Джоэл говорит, что это из-за арифметики указателя, но я все еще не понимаю. почему a[5] == 5[a]?...
хорошо ли определено поведение этого кода? #include <stdio.h> #include <stdint.h> int main(void) { void *ptr = (char *)0x01; size_t val; ptr = (char *)ptr + 1; val = (size_t)(uintptr_t)ptr; printf("%zun", val); return 0; } Я имею в виду, можем ли мы назначить какое-то...