Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include<stdio.h>
  2. /*
  3. &variavel -> aponta para o endereço de memória da variável
  4. *point -> aponta para o valor que está na variável que o ponteiro aponta
  5. point -> aponta para o valor do ponteiro, que é o endereço da variável que ele aponta
  6. point++ ou point+1 -> a operação de soma acontece nas casas da memória.
  7. Se a posição de memória do ponteiro é 5000 fazer point++ a posição passa para 5004(se for do tipo inteiro e depende da arquitetura)
  8. Pode ser que some 2bytes ou 4bytes
  9. */
  10. int main() {
  11. int *p, *q, i, v[2], *pv;
  12. void *qv;
  13. char R[] = "ABCDEFGHI", *S;
  14.  
  15.  
  16. p = &i;
  17. printf("p recebe o endereço da variável i\n");
  18. printf("endereço de 'i' %p e endereço de 'p' %p \n\n", &i, p);
  19.  
  20.  
  21. *p = 5;
  22. printf("'p' acessa 'i' e adiciona o valor 5 a variavel 'i'\n");
  23. printf("valor de 'i': %i\n\n", i);
  24.  
  25.  
  26. q = p;
  27. printf("q recebe o endereço armazenado em p");
  28. printf("endereço de 'i' %p e endereço de 'p' %p e endereço de 'q'%p\n\n", &i, p, q);
  29.  
  30.  
  31. printf("Endereço de 'p '%p\n", p);
  32. p++;
  33. printf("Endereço de 'p++' %p\n\n",p);
  34.  
  35.  
  36. (*q)++;
  37. printf("como 'q' tem o endereço da variável 'i' então, ele também consegue acessar a variavel 'i' e somar uma unidade\n");
  38. printf("valor de 'i': %i\n\n", i);
  39.  
  40. printf("aaaaaaa %d %ld %ld\n", i, p - q, p - q);
  41. v[0] = 0; v[1] = 1;
  42. printf("v[0]: %i v[1]: %i\n", v[0], v[1]);//oi
  43.  
  44.  
  45. pv = v;
  46. printf("Endereço de v: %p endereço de pv:%p \n", v, pv);
  47.  
  48.  
  49. pv++;
  50. printf("Endereço de 'pv++': %p \n", pv);
  51.  
  52.  
  53. *(pv) = *(v+1) + 1;
  54. printf("%d %d\n", v[0], v[1]);
  55.  
  56.  
  57. qv = pv - 1;
  58. printf("v0 %d v1 %d\n", v[0], v[1]);
  59. printf("Endereço de 'qv': %p e endereço de v[0]: %p \n", qv, v);
  60.  
  61. qv = qv + 1;
  62. printf("Endereço de 'qv': %p \n", qv);
  63. printf("valor de 'qv': %i \n", *(int*)qv);
  64. printf("Endereço de v[0]%p v[1]%p \n", v, &v[1] );
  65.  
  66.  
  67. *(int *)qv = 1;
  68.  
  69. printf("%d %d\n", v[0], v[1]);
  70.  
  71.  
  72. S = R;
  73. while (*(S++) != '\0'){
  74. *(S - 1) = *S;
  75. printf("<%s|%s>\n", R, S);
  76. }
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement