Почему эта программа на C дает o / p в окнах, а не в Linux? - PullRequest
0 голосов
/ 07 ноября 2018

Вот программа на C типа приведения типов. Это работает в Windows, но не в Linux. Почему?

#include <stdio.h>
void main()
{
  int a = 30; 
  char b[10] = "hi";
  a=(char*)b;
  printf("%s",a);
}

1 Ответ

0 голосов
/ 07 ноября 2018

Лучший вопрос - почему он вообще работает: совпадение, что int и char* имеют одинаковый размер. Вы никогда не должны предполагать это, должны избегать ложных предположений типов и всегда использовать правильные типы.

На моем Mac int - это 4 байта, а char* - это 8 байтов. Таким образом, помещение 4 байтов в стек и удаление 8 байтов с последующим использованием их в качестве адреса является причиной ошибки сегментации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...