Articles of pointers

Qual é a diferença entre uma referência c # e um ponteiro?

Eu não entendo muito bem a diferença entre uma referência em C # e um ponteiro. Ambos apontam para um lugar na memory, não é? A única diferença que posso descobrir é que os pointers não são tão inteligentes, não podem apontar para nada na pilha, são isentos da garbage collection e só podem referenciar […]

Parâmetro Passando em C – Ponteiros, Endereços, Aliases

Alguém poderia explicar a diferença entre passar o parâmetro em C por favor? De acordo com as annotations do professor, existem 4 maneiras diferentes de passar parâmetros Chamada por valor Chamada por endereço (ponteiro) Ligue-por-alias Variável global / variável estática Se você pudesse dar um exemplo, eu agradeceria muito e seu trabalho seria elogiado.

Modificando um const int em C ++

rodando o seguinte código mostra que & x = ptr, então como x e * ptr não são iguais? const int x=10; int* ptr =(int*) &x; *ptr = (*ptr)+1; cout << &x << " " << x << " " << ptr <<" " <<*ptr; //output : 0012FF60 10 0012FF60 11

Passar um array bidimensional para uma function de parâmetro constante

Eu aprendi com o C Primer Plus que, se você quer proteger um array de ser acidentalmente modificado por uma function, você deve adicionar o modificador de const antes da declaração do ponteiro no header da definição da function. Seguindo este conselho sensato, no seguinte exemplo mínimo, eu estou tentando passar uma matriz de array […]

Como usar o global var nos arquivos de um pacote?

Eu tenho a seguinte estrutura de arquivos: modelos / db.go type DB struct { *sql.DB } var db *DB func init() { dbinfo := fmt.Sprintf(“user=%s password=%s dbname=%s sslmode=disable”, DB_USER, DB_PASSWORD, DB_NAME) db, err := NewDB(dbinfo) checkErr(err) rows, err := db.Query(“SELECT * FROM profile”) checkErr(err) fmt.Println(rows) } func NewDB(dataSourceName string) (*DB, error) { db, err := […]

O NULL é sempre falso?

É seguro assumir que NULL sempre se traduz em false em C? void *somePtr = NULL; if (!somePtr) { /* This will always be executed? */ } Ou deveria ser feita uma verificação explícita contra o valor de NULL ?

Por que as matrizes em C decaem para pointers?

[Esta é uma questão inspirada em uma discussão recente em outro lugar, e eu vou dar uma resposta correta.] Eu estava me perguntando sobre o fenômeno C estranho de matrizes “decadente” para pointers, por exemplo, quando usado como argumentos de function. Isso parece tão inseguro. Também é inconveniente passar o comprimento explicitamente com ele. E […]

desreferenciando o ponteiro nulo

int* p = 0; int* q = &*p; Esse comportamento indefinido é ou não? Pesquisei algumas questões relacionadas, mas esse aspecto específico não apareceu.

O tamanho dos pointers varia em C?

Duplicatas possíveis: O tamanho dos pointers pode variar dependendo do que é apontado para? Existem plataformas onde os pointers para tipos diferentes têm tamanhos diferentes? É possível que o tamanho de um ponteiro para um float em c seja diferente de um ponteiro para int? Tendo experimentado, recebo o mesmo resultado para todos os tipos […]

O que acontece no sistema operacional quando desreferenciamos um ponteiro NULL em C?

Digamos que haja um ponteiro e inicializemos com NULL. int* ptr = NULL; *ptr = 10; Agora, o programa irá travar já que o ptr não está apontando para nenhum endereço e estamos atribuindo um valor a ele, que é um access inválido. Então, a questão é: o que acontece internamente no sistema operacional? Ocorre […]