c++ - Does using index brackets for a pointer dereference it? -
does using index brackets pointer dereference it? , why printing 0th index of pointer twice end printing 2 different things?
#include <cstdlib> #include <iostream> #include <cstring>  using namespace std;  int *p;  void fn() {     int num[1];     num[0]=99;     p = num; }  int main() {     fn();     cout << p[0] << "  " << p[0]; }      
does using index brackets pointer dereference it?
correct, pointer arithmetic equivalent array index. p[index] same *(p+index).
why printing 0th index of pointer twice end printing 2 different things?
because using p point local variable (num) scope ends when fn() function ends. observed undefined behavior. returning pointer local variable bad practice , must avoided.
btw, see scope effect, if move definition of num array outside fn() function, see consistent cout behavior. 
alternatively, @marc.2377 suggested, avoid global variables (which bad practice), can allocate variable in heap (int* num = new int[1];). ok return pointer p fn(), don't forget call delete[] p in main() afterwards.
Comments
Post a Comment