Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 65
1

Initialization from incompatible pointer type

18.12.2013, 01:20. Показов 9618. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Выдается странное предупреждение во время компиляции кода:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
 
int main() {
 
    int a[] = {10, 20, 30, 40, 50}, z, *p = &a;
 
    z = *p;      printf("z = *p;     |    z = %d; p[0] = %d; p[1] = %d; p[2] = %d; p[3] = %d; p[4] = %d;\n", z, p[0], p[1], p[2], p[3], p[4]);
    z = *p+1;    printf("z = *p+1;   |    z = %d; p[0] = %d; p[1] = %d; p[2] = %d; p[3] = %d; p[4] = %d;\n", z, p[0], p[1], p[2], p[3], p[4]);
    z = *(p+1);  printf("z = *(p+1); |    z = %d; p[0] = %d; p[1] = %d; p[2] = %d; p[3] = %d; p[4] = %d;\n", z, p[0], p[1], p[2], p[3], p[4]);
    z = ++*p;    printf("z = ++*p;   |    z = %d; p[0] = %d; p[1] = %d; p[2] = %d; p[3] = %d; p[4] = %d;\n", z, p[0], p[1], p[2], p[3], p[4]);
    z = *++p;    printf("z = *++p;   |    z = %d; p[0] = %d; p[1] = %d; p[2] = %d; p[3] = %d; p[4] = %d;\n", z, p[0], p[1], p[2], p[3], p[4]);
    z = *p++;    printf("z = *p++;   |    z = %d; p[0] = %d; p[1] = %d; p[2] = %d; p[3] = %d; p[4] = %d;\n", z, p[0], p[1], p[2], p[3], p[4]);
    z = (*p)++;  printf("z = (*p)++; |    z = %d; p[0] = %d; p[1] = %d; p[2] = %d; p[3] = %d; p[4] = %d;\n", z, p[0], p[1], p[2], p[3], p[4]);
 
    
    getchar();
    return 0;
}
а вот предупреждение:
Код
first.c: In function ‘main’:
first.c:7:11: warning: initialization from incompatible pointer type [enabled by default]
int *p = &a;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2013, 01:20
Ответы с готовыми решениями:

Assignment from incompatible pointer type
assignment from incompatible pointer type #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

Assignment from incompatible pointer type
В переменной &quot;a&quot; хочу хранить ссылки на адреса памяти значений val. Но выдает ошибки. #include...

Линейный список и ошибка Warning: passing arg 1 of `strcpy' from incompatible pointer type
Проблема с написанием проги (линейный список). Язык Си. #include &lt;stdio.h&gt; #include &lt;string.h&gt;...

Как исправить предупреждение implicit declaration of function и incompatible integer to pointer conversion assigni
Необходимо было реализовать функцию int_vector_copy, результат который был бы указатель на копию...

7
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
18.12.2013, 01:35 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
int *p=a
или
C
1
int *p=&a[0]
Добавлено через 49 секунд
а и так является адресом, а вы добавок еще раз берете адрес
0
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 65
18.12.2013, 01:54  [ТС] 3
Сделал как Вы сказали, но почему такой вывод??
Код
z = *p;     |    z = 10; p[0] = 10; p[1] = 20; p[2] = 30; p[3] = 40; p[4] = 50;
z = *p+1;   |    z = 11; p[0] = 10; p[1] = 20; p[2] = 30; p[3] = 40; p[4] = 50;
z = *(p+1); |    z = 20; p[0] = 10; p[1] = 20; p[2] = 30; p[3] = 40; p[4] = 50;
z = ++*p;   |    z = 11; p[0] = 11; p[1] = 20; p[2] = 30; p[3] = 40; p[4] = 50;
z = *++p;   |    z = 20; p[0] = 20; p[1] = 30; p[2] = 40; p[3] = 50; p[4] = 32767;
z = *p++;   |    z = 20; p[0] = 30; p[1] = 40; p[2] = 50; p[3] = 32767; p[4] = 0;
z = (*p)++; |    z = 30; p[0] = 31; p[1] = 40; p[2] = 50; p[3] = 32767; p[4] = 0;
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
18.12.2013, 02:13 4
а можно узнать, цель сего исследования? И что вы думаете по поводу 6 строки?
0
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 65
18.12.2013, 02:20  [ТС] 5
узнать результаты разных операций с указателями (инкременты, декременты и т.д)
и я уже понял в чем проблемма)) я вылез за границы массива)
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
18.12.2013, 02:23 6
И все-таки, что вы думаете по поводу 6 строки? Что вы ожидаете?
0
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 65
18.12.2013, 02:26  [ТС] 7
Я ожидаю что
z = *++p (20)
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
18.12.2013, 03:00 8
Цитата Сообщение от madonzy Посмотреть сообщение
Я ожидаю что
z = *++p (20)
это 5 строка
0
18.12.2013, 03:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2013, 03:00
Помогаю со студенческими работами здесь

Error: incompatible types when assigning to type 'float' from type 'float (*)
Я написал программу. Она работала, пока я не ввел свои функции PmaxA1 и PmaxB1 (части программы,...

Incompatible type conversion
Жалуется на printf(sum), пишет &quot;Incompatible type conversion&quot;. Не могу понять в чём прикол. ...

Error: incompatible type for argument 1 of ‘pow’
в этой программе: #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; int main()

Работа со списком - Error: dereferencing pointer to incomplete type
Привет всем! Суть вопроса: имеются следующие структуры typedef struct INFO { unsigned int tab;...

Incompatible pointer
Доброго времени суток! Проблема с функцией qsort: passing argument 4 of 'qsort' fro...

Программа на QNX: Incompatible type for arguments 1 of 'scanf'
Только начинаю осваивать QNX. Компилятор gcc ругается: incompatible type for arguments 1 of...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru