Articles of pointers

Função para alocar dinamicamente a matriz

Eu quero criar uma function para alocar (com malloc / calloc ) uma matriz declarada como um ponteiro duplo. Eu entendi como funciona uma matriz de ponteiro duplo e como alocá-lo com malloc , mas quando eu passar minha matriz (declarado em main() e inicializado para NULL ) meu programa trava. Eu suponho que o […]

Verificando se isso é nulo

Alguma vez faz sentido verificar se isso é nulo? Digamos que eu tenha uma aula com um método; dentro desse método, eu verifico this == NULL , e se for, retorne um código de erro. Se isso for nulo, significa que o object foi excluído. O método é capaz de retornar alguma coisa? Atualização: Esqueci […]

Ponteiro para um endereço fixo específico

Como você atribui um endereço de memory específico a um ponteiro? A function especial registra em um microcontrolador tal AVR m128 tem endereços fixos, o AVR GCC define o SFR no arquivo de header io.h, mas eu quero lidar com isso sozinho.

Por que posso alterar uma variável const local por meio de lançamentos de ponteiro, mas não de um global em C?

Eu queria alterar o valor de uma constante usando pointers. Considere o seguinte código int main() { const int const_val = 10; int *ptr_to_const = &const_val; printf(“Value of constant is %d”,const_val); *ptr_to_const = 20; printf(“Value of constant is %d”,const_val); return 0; } Como esperado, o valor da constante é modificado. mas quando eu tentei o […]

Qual é a diferença entre pointers distantes e pointers próximos?

Alguém pode me dizer a diferença entre pointers far e pointers near em C?

Por que cudaMalloc () usa ponteiro para ponteiro?

Por exemplo, cudaMalloc((void**)&device_array, num_bytes); Esta pergunta foi feita antes, e a resposta foi “porque cudaMalloc retorna um código de erro”, mas não entendi – o que um ponteiro duplo tem a ver com retornar um código de erro? Por que um ponteiro simples não pode fazer o trabalho? Se eu escrever cudaError_t catch_status; catch_status = […]

Qual é o motivo para usar um ponteiro duplo ao adicionar um nó em uma linked list?

Os dois exemplos de código abaixo adicionam um nó no topo de uma linked list. Mas enquanto o primeiro exemplo de código usa um ponteiro duplo, o segundo exemplo de código usa um único ponteiro exemplo de código 1: struct node* push(struct node **head, int data) { struct node* newnode = malloc(sizeof(struct node)); newnode->data = […]

printf (“% p”) e conversão para (void *)

Em uma pergunta recente, alguém mencionou que, ao imprimir um valor de ponteiro com printf, o chamador deve converter o ponteiro para void *, assim: int *my_ptr = …. printf(“My pointer is: %p”, (void *)my_ptr); Para a vida de mim eu não consigo descobrir o porquê. Eu encontrei essa pergunta , que é quase o […]

Ponteiro de function C lançando para anular o ponteiro

Eu estou tentando executar o seguinte programa, mas recebendo alguns erros estranhos: Arquivo 1.c: typedef unsigned long (*FN_GET_VAL)(void); FN_GET_VAL gfnPtr; void setCallback(const void *fnPointer) { gfnPtr = *((FN_GET_VAL*) (&fnPointer)); } Arquivo 2.c: extern FN_GET_VAL gfnPtr; unsigned long myfunc(void) { return 0; } main() { setCallback((void*)myfunc); gfnPtr(); /* Crashing as value was not properly assigned in […]

Por que essa implementação de offsetof () funciona?

Em ANSI C, offsetof é definido como abaixo. #define offsetof(st, m) \ ((size_t) ( (char *)&((st *)(0))->m – (char *)0 )) Por que isso não gera uma falha de segmentação, pois estamos desreferenciando um ponteiro NULL? Ou isso é algum tipo de hack do compilador onde ele vê que apenas o endereço do offset é […]