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

Литерал - что делать с указателем? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ пожалуйста объясните человеческим языком алгоритмы шифрования DSA и DES http://www.cyberforum.ru/cpp-beginners/thread1027895.html
Здравствуйте! Пожалуйста можете объяснить человеческим языком алгоритмы шифрования DSA и DES :) За ранее огромнейшая благодарность :yes:
C++ Нужен исходник компилятора Может быть, у кого-нибудь есть самопальные исходники компилятора языка С? (Очень желательно) Ну или, на худой конец, угостит ссылкой скачивание исходников компилятора, чтобы я мог, при желании, каких-нибудь своих фич туда дописать и перекомпилировать сам компилятор. Язык, на котором написан компилятор, – С\С++. http://www.cyberforum.ru/cpp-beginners/thread1027890.html
C++ Заменить все элементы массива квадратами этих элементов
2.Дан целочисленный массив В. Заменить все его элементы их квадратами. Помогите пожалуйста с решением,только начал изучать с++,а уже надо задачи сдать.
C++ Ошибка при запуске программы
Здравствуйте. Написал следующую программку #include <cstdlib> #include <windows.h> #include <iostream> #define SIZE 4
C++ В массиве переставить столбцы в порядке возрастания элементов первой строки http://www.cyberforum.ru/cpp-beginners/thread1027863.html
В массиве А(N,M) переставить столбцы в порядке возрастания элементов первой строки. Не знаю что делать
C++ Передать размер буфера strcpy_s(Name, sizeof Name, newName); // либо же strcpy_s(Name, Name, newName); Собственно копирую строку, передавая при этом размер буфера. Но компилятор выдаёт либо L "Buffer is too small" && 0 либо Expression: ((Dst)) != NULL && ((_SizeInBytes)) > 0. Подскажиет, в чём моя ошибка... подробнее

Показать сообщение отдельно
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
04.12.2013, 10:33     Литерал - что делать с указателем?
Цитата Сообщение от nexen Посмотреть сообщение
programina, капитан, залогинься
Вопрос совершенно о другом
Вот вам наглядный пример. Теперь все станет понятным.
C++
#include <iostream>
using namespace std;
 
 
void foo()
{
  char *s = (char*)"txet"; // поменяйте на text
  cout << (int*)&s[2] << endl;
  cout << (int*)&"text"[3] << endl;
}
 
 
int main() 
{
  foo();
 
  cout << endl;
 
  char *s = (char*)"text";
  cout << (int*)&s[2] << endl;
  cout << (int*)&"text"[3] << endl;
}
Добавлено через 57 минут
И глобальная и локальная переменные находятся в одной области памяти.....
C++
#include <iostream>
using namespace std ;
 
char g[] = "text";
 
void foo ()
{
  char *s = ( char *) "txet" ; // поменяйте на text
  cout << (int * ) & g[0] << endl;
  cout << (int * ) & s[0] << endl ;
  cout << (int * ) & "text"[0] << endl ;
}
 
int main ()
{
  foo () ;
 
  cout << endl ;
 
  char *s = ( char *) "text" ;
  cout << (int * ) & g[0] << endl;
  cout << (int * ) & s[0] << endl ;
  cout << (int * ) & "text"[0] << endl ;
}
Добавлено через 9 минут
C++
#include <iostream>
using namespace std ;
 
char *g = (char*)"text";
 
void foo ()
{
  char *s = ( char *) "txet" ; // поменяйте на text
  cout << (int * ) & g[0] << endl;
  cout << (int * ) & s[0] << endl ;
  cout << (int * ) & "text"[0] << endl ;
}
 
int main ()
{
  foo () ;
 
  cout << endl ;
 
  char *s = ( char *) "text" ;
  cout << (int * ) & g[0] << endl;
  cout << (int * ) & s[0] << endl ;
  cout << (int * ) & "text"[0] << endl ;
}
C++
// foo
0x8048a25 // g = text
0x8048a20 //    txet
0x8048a25 // s = text
 
// main
0x8048a25 // g = text
0x8048a25 //    text
0x8048a25 // s = text
Добавлено через 3 минуты
Странно, память распределена в обратном порядке по отношению к инициализации данных в программе.
 
Текущее время: 11:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru