Форум программистов, компьютерный форум CyberForum.ru

Как из указателя на массив достать конкретное значение массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обработка массивов http://www.cyberforum.ru/cpp-beginners/thread778966.html
Даны две вещественные квадратные матрицы N-го порядка. Вы- ведите на экран квадрат той из них, в которой наименьший след (сумма диагональных элементов). Считайте, что такая матрица одна. Как в данном решении организовать ввод данных с клавиатуры? #include <stdio.h> #include <stdlib.h> #include <time.h>
C++ Проблема с выводом кириллицы на экран Друзья, у меня вопрос заключен в следующем, вот код: #include <iostream> using namespace std; struct Test{ char name; }; void main () { http://www.cyberforum.ru/cpp-beginners/thread778962.html
Наибольшая целая степень двойки, не превосходящая заданного числа n C++
Мне нужно рассчитать наибольшую целую степень двойки, не превосходящую заданного числа n. Например, ввод 101 вывод 64 Есть код, который это делает: ... int n, t=1; cin >> n; for (;t<n;) t*=2;
Переменные в c++ C++
Помогите разобраться в теории. Так вот допустим мы создаем переменную в стеке int a; тогда в стеке где то по адресу скажем 004 выделяется 4 байта в которые записывается переменная в двоичном коде. Фррр а вот теперь вопрос а где храниться сам адрес 004 , откуда программа знает что переменная храниться в этом адресе? она что где то его сохраняет ?а если мы где то храним адрес то как мы узнаем...
C++ Написать рекурсивную процедуру перевода числа из десятичной системы в N –ю (2<= N <= 16) http://www.cyberforum.ru/cpp-beginners/thread778948.html
Написать рекурсивную процедуру перевода числа из десятичной системы в N –ю (2<= N <= 16) с циклами всё сделать гораздо проще, но вот задание такое, а рекурсию чёт я не особо втыкаю(
C++ Дано предложение. Вывести все буквы м и н в нем Дано предложение. Вывести все буквы м и н в нем. с помощью функций. С++ подробнее

Показать сообщение отдельно
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
06.02.2013, 05:29     Как из указателя на массив достать конкретное значение массива
если вас беспокоит этот код
C++
1
pno[n]=str2[j];
то это правильно, что беспокоит )))
во первых pno - это указатель (ну так он у вас заявлен) на структуру nostr, имеющую 20 позиций... я думаю такова была мысль при написании этого кода? это не совсем так...

порассуждаем...

операция указатель[число] - это синтаксический сахар в компиляторе, она ничто иное как *(a + i * sizeof(a)), для a=1, коим является char - и вовсе *(a+i), откуда не важно как вы запишите что pno[n], что n[pno], результат один - берётся указатель от суммы этих чисел... первое из них - это указатель, второе смещение от этого указателя в байтах... от перестановки - сумма не меняется
отлично и куда же ссылается в предельном случае цикла сей указатель? а это зависит от числа n, я уже отсюда вижу, не исполняя код - что для пустой строки n достигнет 25 точно... что несмонено больше позволеному ему в nostr[20]
выход - наверняка segmentation fault

аналогично если поглядеть на правую часть -
str2 тоже указатель, всё по аналогии... так 1[str2]=str2[1] и т.д. у вас туда пихается j равный длине строки... то вы всегда попадается за пределы строки str2, к чему? там "/0" символ и ничего интересного... а пихаете вы его в непонятные и недозволенные адреса...

дальше... если вкопаетесь в main - там есть строчка
char str[80];

str - это тоже указатель... и str[1] = 1[str] и при вызове своей функции вы лишь передаёте значения адреса str в str2
т.е. по сути ничего внутри функции не меняется... пользуйтесь str2 как обычным str... str2[2] вернёт вам str[2], т.е. третий символ строки... 2[str2] сделает тоже самое )

так же выкиньте эту фигню: *pno=nostr;
общайтесь с nostr так же по индексам...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru