Вы не указали, какой макет вы используете, поэтому хороший макет для реализации будет GridBagLayout . Демонстрация на сайте oracle отлично подходит для начала.
И короткий пример:
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
panel.add(new JLabel("Label 1:"), c);
c.gridx = 1;
c.gridy = 0;
panel.add(new JTextField("TextField 1"), c);
c.gridx = 0;
c.gridy = 1;
panel.add(new JLabel("Label 2:"), c);
c.gridx = 1;
c.gridy = 1;
panel.add(new JTextField("TextField 2"), c);
Вы просто копируете начальный адрес str
в temp
. Это означает, что любые изменения в temp
будут отражены и в str
, поскольку они указывают на одну и ту же память. Он по-настоящему не эмулирует strcpy(dest, src)
, что создает отдельную копию строки с нулевым символом в конце, на которую указывает src
, начиная с ячейки памяти, на которую указывает dest
.
Итак, чтобы ответить на ваш вопрос как на вопрос: нет.
Если ваше намерение состоит в том, чтобы избежать времени выполнения O (n) strcpy
, это также то, что вы не можете сделать на самом деле.
Если для программирования или выполнения упражнения вам потребуется создать код, функционально эквивалентный strcpy
, вот высокоуровневое описание алгоритма, который он использует:
*source
- *destination
source
и увеличьте указатель до destination
.