Для начала, для любого ptr с имеющимся у вас кодом не будет выделяться память.
int i = 0;
while( i >= 3)
Это вообще не будет вводить цикл while
.
Однако, если вы ищете доступ к ptr, содержащемуся внутри struct
, вы можете попробовать это.Я не уверен, чего вы пытаетесь достичь, назначив ptr с собственным адресом структуры объекта.Программа ниже напечатает значение x
и адрес, присвоенный ptr
.
#include<iostream>
using namespace std;
struct data {
int x;
data *ptr;
};
int main() {
int i = 0;
data pointer[4];
while( i <=3 ) {
pointer[i].x = i;
pointer[i].ptr = &pointer[i];
i++;
}
for( int i = 0; i <= 3; i++ )
{
cout<< pointer[i].x << endl;
cout<< pointer[i].ptr << endl;
}
}
ВЫХОД:
0
0xbf834e98
1
0xbf834ea0
2
0xbf834ea8
3
0xbf834eb0
Лично, когда я знаю количество итераций Iхочу сделать, я выбираю for
циклы и использую while
только тогда, когда я ищу итерацию неизвестного числа раз, прежде чем логическое выражение будет удовлетворено.