присваивание делает целое число из указателя без приведения - PullRequest
0 голосов
/ 27 мая 2011

В приведенном ниже коде я получаю сообщение об ошибке, когда присваиваю len1 массиву a Ошибка

assignment makes integer from pointer without a cast

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Какие типы (под) выражений в вашем выражении?

a[4] = len1;

len1 - это массив из 50 символов (тип char[50]), но в приведенном выше выражении он распадаетсяуказатель на его первый элемент.Это значение типа char*.
a[4] - это объект типа char.

Нельзя присвоить char* объекту типа char!

Я думаю, может быть, вы хотели

/* BEWARE BUFFER OVERFLOWS */
strcpy(a+4, len1); /* a+4 is of type `char*`, len1 decays to `char*` */
1 голос
/ 27 мая 2011

Проблема в том, что a[4] - это char, тогда как len1 - это массив символов!

Когда вы объявляете

char a[7] = {...}

Вы говорите, что хотите, чтобы a был массивом символов, и вы инициализируете значения в a значениям в {...}.

Когда вы говорите a[4], вы говорите, идите 4 туда, где есть а, и используйте там значение, которое является char. Но len1 - это char pointer, поэтому, когда вы назначаете его на a[4], вы получаете предупреждение!

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