Puede realizar un número limitado de operaciones aritméticas en punteros. Estas operaciones son: incremento, decremento, suma, resta, comparación y asignación.

pointer-arithmetic...

Teniendo esto: #include <stdio.h> #include <stdlib.h> struct Test { char c; } foo; int main (void) { struct Test **ar; ar=malloc(16); *(ar+1) = &foo; ar[1]->c = 'c'; //this work (*(*ar+1)).c = 'c'; //this does't work return 0; } //(**(ar+1)).c='c'; --> first case ¿Por q....
Estoy usando VS Code y el compilador GCC. Aquí está el código: #include <stdio.h> #include <stdlib.h> int main() { void *ptr = malloc(100); printf("%p\n", ptr); printf("%p\n", (int *)ptr + 1); printf("%p\n", (int *)ptr - 1); void *ptr2 = ptr; ....
13 mar. 2020 a las 06:53
Entonces, estoy empezando a familiarizarme con C, y en este punto estoy tratando de entender los punteros. Obtuve el siguiente código de aquí, pero no puedo comprender, cómo se resta una matriz de caracteres de un puntero. #include<stdio.h> #include<string.h> #include<conio.h> main() { char s[3....
Programa 1: #include <iostream> using namespace std; int main() { string str; char temp = 'a'; str += temp + "bc"; cout << str; return 0; } Salida: Caracteres desconocidos Programa 2: #include <iostream> using namespace std; int main() { string str; char temp =....
Estoy aprendiendo programación en C y leí este tutorial en línea, que establece que siempre debe preferir usar el operador [] sobre la aritmética del puntero tanto como sea posible. https://www.cs.swarthmore.edu/~newhall/unixhelp/C_arrays.html#dynamic puede usar aritmética de puntero (pero en gener....
11 ene. 2020 a las 10:43
void * ptr = NULL; // array of unspecified 13-byte type for (int i = 0; i < 10; i++) { printf("%i ", ((char (*) [13]) ptr) + i); } putchar('\n'); Salida: 0 13 26 39 52 65 78 91 104 117 Entonces esto funciona (al menos en GCC), pero ¿cómo puedo declarar una variable de tipo (char (*) [13] par....
14 dic. 2019 a las 01:20
Soy nuevo en los punteros, por favor avíseme cómo puedo imprimir el carácter ingresado. #include <stdio.h> #include <stdlib.h> int main() { char *ptr; ptr = malloc(32 * sizeof(char)); *ptr = 'h'; ptr++; *ptr = 'e'; ptr++; *ptr = 'l'; pt....
13 nov. 2019 a las 12:31
Estaba leyendo lo siguiente del estándar C: (6.5.6 Operadoras aditivas) 9 Cuando se restan dos punteros, ambos deben apuntar a elementos de el mismo objeto de matriz , o uno pasado el último elemento de la matriz objeto; el resultado es la diferencia de los subíndices de los dos elementos de la mat....
7 sep. 2019 a las 00:26
¿Podría explicar cómo es la salida -4? Creo que ++pp; es UB pero no estoy seguro. Su explicación realmente ayudará en la forma de entender. ¿Podría haber alguna diferencia de salidas en la máquina big-endian o little-endian? #include <stdio.h> int a[] = { -1, -2, -3, -4 }; int b[] = { 0, 1, 2, 3 };....
22 jun. 2019 a las 01:14
Dado que la aritmética del puntero se define dentro de la misma matriz, dudo que podamos restar NULL de otro NULL. Me preocupa la implementación de: //first and second can both either be from the same array //or be both NULL prtdiff_t sub(void *first, void *second){ //Do I really need this cond....
18 abr. 2019 a las 16:59
Asumiendo que hay una función como esta int foo (char** str, int x) { char* p = *str + x; foo2(&p); // declared as int foo2 (char** ); } (simplificado en exceso, por supuesto, la función real es recursiva y mucho más complicada) He intentado hacer esto: int foo (char** str, int x) { ....
9 mar. 2019 a las 13:43