Почему когда я задаю массив так
int n
char a[n]
выдает ошибку?
или char a[] - тоже ошибка, хотя память должна выделяться автоматически
как норм задать массив типа char, чтобы размер можно было ввести с клавиатуры?
Другие языки программирования и технологии
Как правильно задать одномерный массив в C++?
Понравился ответ Krab в ветке комментов.
Справедливости ради отмечу, что в плюсах для решения такой задачи целесообразнее использовать std::vector<char> a(nCaclulatedInRuntime);
Стандарт гарантирует, что &a[0] будет указывать на сплошную простыню памяти нужного размера, инициализированную нулями (для встроенных типов в векторе) . И еще и выровненную под любой тип данных, т. к. выделеление памяти внутри произойдет через operator new[] (по Стандарту) . Вот Вам пример, специально со всякими printf-ами и memcpy, чтоб нагляднее указатели выглядели:
#include <vector>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
vector<char> v(10);// inits v with 10 zero chars
memcpy(&v[0], "12345", 5);
printf("%s", &v[0]);
}
Справедливости ради отмечу, что в плюсах для решения такой задачи целесообразнее использовать std::vector<char> a(nCaclulatedInRuntime);
Стандарт гарантирует, что &a[0] будет указывать на сплошную простыню памяти нужного размера, инициализированную нулями (для встроенных типов в векторе) . И еще и выровненную под любой тип данных, т. к. выделеление памяти внутри произойдет через operator new[] (по Стандарту) . Вот Вам пример, специально со всякими printf-ами и memcpy, чтоб нагляднее указатели выглядели:
#include <vector>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
vector<char> v(10);// inits v with 10 zero chars
memcpy(&v[0], "12345", 5);
printf("%s", &v[0]);
}
У тебя нет точек с запятой после операторов.
А размер массива с клавиатуры можно ввести тремя способами.
а) задать первоначально его с запасом: int n,a[1000]; cin>>n;
б) использовать вместо обычных массивов класс vector
б) некоторые компиляторы C++, позволяют использовать VLA массивы, имеющиеся в С, но далеко не все. int n; cin>>n; int a[n]; Это только если ты пишешь под конкретный rjvgbkynjh_ gjllthöbdf.obq МДФ *мфкшфиду дутпер фккфя (ю
И когда пишешь вопросы, пиши соответственно правилам русского языка. Я хоть и не компилятор, но всё равно читать без знаков препинания тяжелее.
А размер массива с клавиатуры можно ввести тремя способами.
а) задать первоначально его с запасом: int n,a[1000]; cin>>n;
б) использовать вместо обычных массивов класс vector
б) некоторые компиляторы C++, позволяют использовать VLA массивы, имеющиеся в С, но далеко не все. int n; cin>>n; int a[n]; Это только если ты пишешь под конкретный rjvgbkynjh_ gjllthöbdf.obq МДФ *мфкшфиду дутпер фккфя (ю
И когда пишешь вопросы, пиши соответственно правилам русского языка. Я хоть и не компилятор, но всё равно читать без знаков препинания тяжелее.
Кайсар Искаков
хорошо, но там одна запятая есть))
Если размер известен заранее - то так:
char a[100500];
Если размер заранее неизвестен - то так:
int n=100500;
char *a = new char [n];
char a[100500];
Если размер заранее неизвестен - то так:
int n=100500;
char *a = new char [n];
Потому что int n не инициализирован, ты не задал ему значение.
char a[] для случаев, где возможно автоопределение размеров массива. Т. е. там где ты инициализируешь значение сразу.
char a[] = "some string..\n";
int b[] = { 1, 2, 3, 4, 5 };
char a[] для случаев, где возможно автоопределение размеров массива. Т. е. там где ты инициализируешь значение сразу.
char a[] = "some string..\n";
int b[] = { 1, 2, 3, 4, 5 };
Кайсар Искаков
главной функцией чтоли? void main( )?
Похожие вопросы
- Как задать двумерный массив на C#, чтобы значения можно было писать при запуске программы?
- C++ одномерный массив
- Заполнить случайным образом одномерный массив из n элементов и обменять местами последний и максимальный (в паскале)
- Написать в С++. Задан одномерный массив А из 10 чисел.
- сформировать с помощью ДСЧ одномерный массив и вывести его на печать
- сформировать с помощью ДСЧ одномерный массив и вывести его на печать .
- СРОЧНО ПАСКАЛЬ задан одномерный массив с (1..10), дать ответ: каких элементов больше: положительных или отрицательных
- Задача pascal abc fr. Одномерный массив
- Всем привет. Никак не могу понять динамически массивы в C++.
- Паскаль, домашка, одномерный массив и функции, ХЭЛП!