+ 1

Why mostly in c program using pointer pointer is daclared in this way ? *ptr = NULL

#include <stdio.h> int main() { int a[5] = {22, 33, 44, 55, 66}; int *ptr = NULL; int i; ptr = a; for (i = 0; i < 5; i++) { printf("%d ", *(ptr + i)); } }

6th Mar 2020, 8:17 AM
Yash Chaudhari
Yash Chaudhari - avatar
4 ответов
+ 6
Every variable in C, if you don't initialize it, comes with an arbitrary value, which basically is just the bit pattern that still remains there from former use of that point in memory. So a pointer will have stored a random address, pointing somewhere in memory. You don't want to risk accessing stuff randomly by accident, so you first point into nothingness. Basically like you wouldn't point with a gun at people, even if it's not loaded.
6th Mar 2020, 8:35 AM
HonFu
HonFu - avatar
+ 1
Is the code in SoloLearn? if it is, then share the code link. Otherwise show a copy of it. Without a code for review it's hard to tell whether the way the code is written in such way was reasonable. (Edit) Code posted.
6th Mar 2020, 8:35 AM
Ipang
0
In C language, there is no concept of auto initialization as in java. So if you do not initialize the pointer thn it will pointing to some junk location, (unknown memory address). But if that junk location is already the address of any existing data, thn it will cause of program crash or hang the window. So for safety purpose you should always initialize pointer to NULL
6th Mar 2020, 6:02 PM
Akbar Ali Quazi
Akbar Ali Quazi - avatar
0
The rule is simple. All variables must be initialized before being used. C doesn't do it for you and the allocated space may be dirty with unexpected data. C wants to be fast. Why allocate space for a variable, write a default value inside it and then write another one chosen by the programmer? Although modern Cs tend to set defined variables to 0. In the case of pointers put them to NULL because if (!ptr) // do a nice malloc :) In your case then it is useless to write int * ptr = NULL; If the intention is to initialize ptr with a, write directly int * ptr = a;
6th Mar 2020, 10:01 PM
Ciro Pellegrino
Ciro Pellegrino - avatar