Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Ann Joker
3 / 3 / 0
Регистрация: 05.10.2011
Сообщений: 86

Pointer. Int *

26.11.2011, 11:36. Показов 1513. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать функцию, которая находит максимальное значение из int *a pointer (подсказка: используйте *a pointer как динамичный массив, также используйте strlen() для размера массива.

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
void max(int s){
    for (int i = 0; i < s; i ++){
        cin >> *(p + i);
    }
}
 
int main (){
    int *p;
 
    int s = strlen(p);
    max(s);
    return 0;
}
помогите решить и если не сложно, объясните как работать с интеджерами.

заранее благодарю.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2011, 11:36
Ответы с готовыми решениями:

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int Funkz(int a) int Funkz(int a, int b, int...

Shared_ptr - stored pointer, owned pointer
Зачем в shared_ptr нужен хранимый указатель, отличный от владеемого? И так в этом средстве, вроде как предназначенном для уменьшения...

Не работает перегрузка индексного оператора [], вместо [int][int] почему то нужно ставить [0][int][int]
#include&lt;iostream&gt; #include&lt;string&gt; #include&lt;vector&gt; #include&lt;algorithm&gt; #include&lt;ctime&gt; #include&lt;conio.h&gt; #include&lt;windows.h&gt; ...

11
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
26.11.2011, 12:30
Ann Joker,
C++
1
2
3
4
int int_mas[] = {48,49,50,51,52,53};
char * str = (char *)int_mass;
cout<<str<<endl;
cout<<strlen(str)<<endl;
Добавлено через 2 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(char *)int_mass;
- это преобразование из int * в char *
на пальцах - из целочисленного массива делаем строку (строка образуется из символов соответсвующих кодом ASCII величинам элементов в int * массиве)
0
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
26.11.2011, 12:48
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
cout<<strlen(str)<<endl;
strlen будет идти по байтам, пока не встретит нулевой байт, а встретит она его сразу же
потому как 48 типа int, в двоичном представлении это: 00000000000000000000000000110000
если int 4-ех байтовый
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
26.11.2011, 13:13
-=ЮрА=-, Лол, что? один инт будет соответствовать sizeof(int) символов char. И судя по тому, что первый(по индексу) будет символ будет с кодом 0 - символ конца строки. Строка будет не очень длинная)

Добавлено через 6 минут
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
strlen будет идти по байтам, пока не встретит нулевой байт, а встретит она его сразу же
То что использовать нельзя strlen() это ясно. Но вроде как идет обратный порядок бит, и символ конца строки будет вторым.
1
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
26.11.2011, 13:23
Цитата Сообщение от KuKu Посмотреть сообщение
То что использовать нельзя strlen() это ясно. Но вроде как идет обратный порядок бит, и символ конца строки будет вторым.
порядок байт
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.11.2011, 11:28
KuKu, смотри, да я вчера просто в блокноте форума написал, ниже как надо уже
Цитата Сообщение от KuKu Посмотреть сообщение
То что использовать нельзя strlen() это ясно
- вот именно не ясно!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    void * lpBuf = (void *)"YurA";
    int * int_mass = (int *)lpBuf;
    char *str = (char *)int_mass;
    cout<<str<<endl;
    cout<<strlen(str)<<endl;
    system("pause");
    return 0;
}

Не по теме:

Net_Wanderer, не обсуждай мои коды, а предлагай решения, уровень состоит не в обсуждении а в помощи;)

Миниатюры
Pointer. Int *  
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
27.11.2011, 13:39
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
3
void * lpBuf = (void *)"YurA";
 int * int_mass = (int *)lpBuf;
 char *str = (char *)int_mass;
И в чем смысл этой маниуляции char* в void*, void* в int* и int* в char*? Это прям такая неожиданность, strlen выдал то, что надо)). И работа с массивом интов тут ваще не причем.
1
27.11.2011, 17:35

Не по теме:

Цитата Сообщение от KuKu Посмотреть сообщение
Это прям такая неожиданность, strlen выдал то, что надо
- думается простая земная зависть от того что кто-то знает как из инта_ptr чар_ptr получить. а кто то нет вот и всё...
Цитирую слова
Цитата Сообщение от KuKu Посмотреть сообщение
Лол, что? один инт будет соответствовать sizeof(int) символов char
как оказалось вполне реально работать с указателем;)

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
27.11.2011, 18:20
Цитата Сообщение от Ann Joker Посмотреть сообщение
strlen() для размера массива.
Для размера массива интов? На сколько мне известно, strlen считает charы. Кроме того, чтоб его использовать, в конце массива должен быть терминальный ноль.

Добавлено через 7 минут
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(строка образуется из символов соответсвующих кодом ASCII величинам элементов в int * массиве)
Бред. У этих типов не совместимая разрядность, и чтоб из значений целых интов получить charы, надо преобразовать саму строку, для этого нужен цикл, а не оператор приведения типа. А
C++
1
(char *)a;
приводит только указатель, причем без фактического преобразования. И ещё. Предположим, попадётся инт, равный 1040. Первый байт 0, второй 0, третий 4, четвёртый 16. Первый байт этой чётверки будет принят за терминальный. strlen не поймает ложный терминальный ноль только в том случае, когда все инты строго больше 16843008. А при обратном порядке байт в инте 1040 даст первый байт 16, второй 4, третий 0, четвёртый 0.
0
27.11.2011, 18:24

Не по теме:

taras atavin, читай хоть иногда что пишут - достал своей глупостью даже говорить не хочу...Есть код разбирайся, сложно - читай книги...

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
27.11.2011, 18:26
Цитата Сообщение от KuKu Посмотреть сообщение
Но вроде как идет обратный порядок бит,
Во первых байт, а во вторых есть камни и с прямым порядком а не толь с обратным.
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
27.11.2011, 18:40
Что бы я без вас делал)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2011, 18:40
Помогаю со студенческими работами здесь

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

[C++ Error] Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int'
Всем привет! Пожалуйста , помогите , почему выдает ошибку Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int' ?. Мне нужно...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?
Не понимаю, с чего начинать. Заранее спс.

Что означает ошибка too few arguments to function ‘int my_func(int, int)’ (язык C++)?
В чём проблема? #include &lt;iostream&gt; int my_func (int i, int j){ int z; z=i+j; return z; } int main(){ ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru