целочисленные массивы и массивы символов с указателями - PullRequest
0 голосов
/ 20 октября 2019

Мне бы очень хотелось помочь с указателями в c ++. Взгляните на следующий код:

int array[3]={4,7,2};
int * a;

a = array;

char Carray[3]={'p','k','\0'};
char * c;

c = Carray;

cout << a << "\n";
cout << c << "\n";

Печать a возвращает адрес первого элемента массива, т. Е. 4, как и ожидалось.

Но печать c должна была дать адреспервый элемент Carray, т. е. p, но вместо этого он дает всю строку, т. е. «pk» в этом случае. и мы не использовали оператор значения * здесь.

Будет очень любезно, если кто-нибудь сможет мне это объяснить

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

вы должны указать, как ваши переменные должны обрабатываться во время распечатки. это не совсем очевидно при использовании потоков, поэтому я бы рекомендовал начать с простых вещей, а именно: printf:

printf( "%d\n", *a );
printf( "%d\n", a );
printf( "%c\n", *c );
printf( "%s\n", c );

и посмотреть, какой вывод вы получите.

0 голосов
/ 20 октября 2019

Это потому, что std::cout обрабатывает char* как строку в стиле C. Если вам нужен адрес, вы можете попробовать:

std::cout << (void *) c;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...