0

Using pointers instead of global variables

In one tutorial I heard that you can avoid global variables by using pointers. Can you give me some example?

20th Sep 2020, 6:37 PM
Kry$tof
6 odpowiedzi
+ 3
Yeah: int foo(int* a){ (*a)++; } void main(){ int b=10; foo(&b); //prints 11 printf("%d",b); } Of course you could make b a global variable but it is not a good practice to have a lot of global vars. (btw I know c++ not C so I'm sorry if I made any minor mistake)
20th Sep 2020, 6:45 PM
xaralampis_
xaralampis_ - avatar
+ 1
xaralampis_ thank you, code is correct and compiles without errors, but had to sit and stare at it for a while :D
20th Sep 2020, 7:30 PM
Kry$tof
+ 1
Kry$tof no problem if you still are not sure about how it works I can explain it to you.
20th Sep 2020, 7:32 PM
xaralampis_
xaralampis_ - avatar
+ 1
xaralampis_ thanks it's ok I understand how it works
20th Sep 2020, 7:32 PM
Kry$tof
+ 1
Kry$tof yes of course you could do that but it doesn't make much sence. If instead of foo the function name was 'increment' for example writing this code would be bad because someone or if even you could do those mistake: increment(c);//the function here basicly does nothing. the return value is not being used. + that the return value takes also space in memory for no reason. + that c does not actually increment, the parameter does. What you are trying to understand here (I think) is "when to pass by pointer and when to pass by value?". My answer is that when you want to modify something you pass as a parameter, always try passing it by pointer. Otherwise return what you want using the return statement. I don't get what you mean with your last question though.
3rd Oct 2020, 11:01 PM
xaralampis_
xaralampis_ - avatar
0
@xaralampis_ Sorry for the late reply but isn't it easier to it like this? : #include <stdio.h> int foo(int c){ c++; return c; } int main() { int c = 15; printf("%i\n", foo(c)); return 0; } is there anything you cant do without pointers? thanks
3rd Oct 2020, 8:05 PM
Kry$tof