scanf("%d", number);
In this case, number
is integer. scanf()
expects you to pass it the address of the variable you want to read an integer into. But, the writer has fogotten to use the `&' before number
to give scanf
the address of the variable. If the value of number
happened to be 3, scanf()
would try to access memory location 3, which is not accessible by normal users. The correct way to access the address of number
would be to place a `&' (ampersand) before number
:
scanf("%d", &number);
Another common segmentation fault occurs when you try to access an array index which is out of range. Let's say you set up an array of integers:
int integers[80];
If, in your program, you try to use an index (the number within the brackets) over 79, you will ``step out of your memory bounds'', which causes a segmentation fault. To correct this, rethink your array bounds or the code that is using the array.