Чт авг 24, 2023 18:01:38
void func(unsigned char* arrr)
void func(unsigned char* arrr, int randNumber)
#define size 11
unsigned char arrr[size];
void loop() {
label:
randNumber = random(4, 15);
if (r == randNumber) {goto label;}
r = randNumber;
func(arrr);
for (n = 0; n < 11; n++) {
Serial.println(arrr[n]);
}
delay(3000);
}
void func(unsigned char* arrr)
{
for (i = 0, j = 4; i < 12; i++) { //Создать массив пинов из 12 чисел
arr[i] = j;
j++;
}
lenarr = sizeof(arr) / sizeof(int); //вычислить длину массива
for (o = 0; o < lenarr; o++) { // присвоить переменной каждое число из массива
k = arr[o];
if (randNumber != k) { //сравнить
//for (d=0; d<12; d++){ //Создать массив без нужного числа
arrr[d] = k;
d++;
} //if (randNumber != k)
} //for (o = 0; o < lenarr; o++)
return arrr;
}
Чт авг 24, 2023 18:30:30
Чт авг 24, 2023 18:33:27
Чт авг 24, 2023 18:34:43
Чт авг 24, 2023 18:43:05
Чт авг 24, 2023 19:02:59
Чт авг 24, 2023 19:51:20
rss-999 писал(а):Есть функция которая возвращает массив.
rss-999 писал(а):Если оставить как в первом примере, переменная передается только при первой итерации, а при последующих использует старое значение.
Чт авг 24, 2023 20:18:40
Пт авг 25, 2023 06:50:42
int a = 1 ;
int b = 10 ;
// Вызов функции:
// переменная a передается в функцию через указатель, для дальнейшей модификации самой переменной
// переменная b передается в функцию по значению
int c = func( &a, b );
int func( int * var1, int var2)
{
*var1 = *var1 + 1; // разрешаем указатель на переменную a и модифицируем ее
var2 ++; // переменная b остается неизменной, работаем с ее локальной копией
return *var1 * var2;
}
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b=temp;
}
...
int x = 100;
int y = 200;
swap(&x, &y); // обмен значениями
Пт авг 25, 2023 07:08:48
Пт авг 25, 2023 09:11:42
unsigned char arrr[size];
...
void func(unsigned char* arrr) {
warning: return-statement with a value, in function returning 'void' [-fpermissive]return arrr;^~~~
Пт авг 25, 2023 13:23:58
randomSeed()
Пт авг 25, 2023 17:09:23
Пт авг 25, 2023 17:13:06
Пт авг 25, 2023 17:17:24
Пт авг 25, 2023 17:50:24
/*
*---- шаблон главного файла проекта ----*
*---------- TEST ----------*
* test.ino
*
*/
//----------
/*
* раздел обьявлений
*/
//----------
void setup() {
// put your setup code here, to run once:
}
//----------
void loop() {
// put your main code here, to run repeatedly:
}
//----------
/*
* "подвал" с описанием функций
*/
//----------
//---------- файла/end of file---------------------
Пт авг 25, 2023 19:04:37
Пт авг 25, 2023 20:03:08
Пт авг 25, 2023 20:09:07
Пт авг 25, 2023 20:58:35
#define size 11
unsigned char arrr[size];
// ***!!!!! пропущен основной заголовок setup()
void setup() {
// put your setup code here, to run once:
}
// ***!!!!!
void loop() {
label:
// ***!!!!! нет объявления переменной randNumber
// нет объявления переменной r
// не учитывается размерность данных ГСЧ int или long
// не определен тип данных для n в цикле for
// используется Serial.println() без предварительного запуска
// Serial.begin(speed) в разделе setup()
// ***!!!!!
randNumber = random(4, 15);
if (r == randNumber) {goto label;}
r = randNumber;
func(arrr);
for (n = 0; n < 11; n++) {
Serial.println(arrr[n]);
}
delay(3000);
}
// ***!!!!!
// нет объявления массива arr и его типа данных
// не определен тип данных для i и j в цикле for
// нет объявления переменной k и ее типа данных
// нет объявления переменной lenarr и ее типа данных
// не определен тип данных для o в цикле for
// нет объявления переменной d и ее типа данных
// в if (randNumber != k) тип k является не определен исходя из обьявления массива
// а randNumber есть int или long согласно референса для ГСЧ random()
// void func(unsigned char* arrr) есть void следовательно НИЧЕГО НЕ ВОЗВРАЩАЕТ
// ***!!!!!
void func(unsigned char* arrr)
{
for (i = 0, j = 4; i < 12; i++) { //Создать массив пинов из 12 чисел
arr[i] = j;
j++;
}
lenarr = sizeof(arr) / sizeof(int); //вычислить длину массива
for (o = 0; o < lenarr; o++) { // присвоить переменной каждое число из массива
k = arr[o];
if (randNumber != k) { //сравнить
//for (d=0; d<12; d++){ //Создать массив без нужного числа
arrr[d] = k;
d++;
} //if (randNumber != k)
} //for (o = 0; o < lenarr; o++)
return arrr;
}