Почему я не могу инициализировать массив с указателями? - PullRequest
1 голос
/ 15 марта 2020

Я попытался понять связь между указателями и массивами. Почему это печатает "okkoD@@"? Пожалуйста помоги.

#include <stdio.h>

int main(){
    char a = 'o';
    char b = 'k';
    char uga[2];
    *(uga) = a;
    *(uga+1) = b;
    printf("%s", uga);
}

1 Ответ

1 голос
/ 15 марта 2020

Это потому, что строка в C оканчивается на 0. Поэтому, когда вы делаете это printf("%s", uga);, функция будет печатать символы, пока не найдет элемент 0, а затем остановится. Но в uga его нет, поэтому он будет печатать символы из стопки. Это неопределенное поведение. Попробуйте это

#include <stdio.h>

int main(){
    char a = 'o';
    char b = 'k';
    char uga[3];
    *(uga) = a;
    *(uga+1) = b;
    *(uga+2) = 0; // adding string terminating 0
    printf("%s", uga);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...