Pointer v C++

Pavel Hudeček edizon na seznam.cz
Pondělí Prosinec 12 13:15:49 CET 2022


Aha tak to je vtipný překvápko:-)
Docela často používám *(pointer++) = něco.
A nikdy mě nenapadlo, že priorita je taková, že tady ta závorka není 
potřeba.

PH

Dne 12.12.2022 v 12:32 M. napsal(a):
> Zdravim
>
>
> skuste namiesto   *maskedCnt    toto     (*maskedCnt).
>
> Ak to pomoze, vysvetlenie je tu:
>
> https://en.cppreference.com/w/cpp/language/operator_precedence
>
>
> M.
>
> On 12-Dec-22 11:56, Pavel Hudeček wrote:
>> unsigned char masks[10][SINGLE_CHIP_PIXSIZE];
>>
>> di je parametr a jako parametr projde ještě několika voláníma, na 
>> začátku je:
>> for (unsigned n = 0; n < connectedDevCnt; n++) testFnThrCall(n, thli);
>> Kde n vstupuje do di v testFnThrCall. A tahle funkce pouští thready. 
>> Pak následuje while, který počká až mají všechny hotovo.
>>
>> PH
>>
>> Dne 12.12.2022 v 11:35 Jan Waclawek napsal(a):
>>> masks[di] --> unsigned char *mask
>>>
>>> ako presne je deklarovane masks resp. di?
>>>
>>> wek
>>>
>>>
>>>
>>> ----- Original Message ---------------
>>>
>>> Subject: Pointer v C++
>>>     From: Pavel Hudeček <edizon na seznam.cz>
>>>     Date: Mon, 12 Dec 2022 11:25:07 +0100
>>>       To: hw-list na list.hw.cz
>>>
>>>> Dobrý den vąem,
>>>> mějme funkci:
>>>> int maskDevAuto1(unsigned di, unsigned run, double time, unsigned 
>>>> short
>>>> limit, unsigned char *mask, int *maskedCnt) {
>>>>      ...
>>>>      maskedCnt[0] = 0;
>>>>      ...
>>>>      for (n = 0; n < ...
>>>>         ...
>>>>         if (mask[n] == PXC_PIXEL_MASKED) maskedCnt[0]++;
>>>>      }
>>>>      ...
>>>>      printf("maskDevAuto1: %d: time %.3f, limit %d, run %d, masked
>>>> %d\n", di, time, limit, run, maskedCnt[0]);
>>>>      return 0;
>>>> }
>>>>
>>>> a ta je volaná z:
>>>>
>>>> int maskDevAuto(unsigned di, unsigned short limit) {
>>>>      ...
>>>>      int maskedCnt = 0;
>>>>      ...
>>>>      for (run = 0; run < 10; run++) {
>>>>          rc = maskDevAuto1(di, run, times[run], 100, masks[di], 
>>>> &maskedCnt);
>>>>          ...
>>>>      }
>>>> }
>>>>
>>>> Takhle to funguje. Proč to ale nefunguje, pokud místo maskedCnt[0] dám
>>>> *maskedCnt?
>>>> Umře buď ten if, nebo printf. Případně neumře, ale ten printf napíąe
>>>> hausnumero, klidně třeba záporný.
>>>>
>>>> Poznámky:
>>>> masks a times jsou globální pole.
>>>> maskDevAuto je volána z daląí funkce a ta je ve for cyklu spuątěna v
>>>> několika threadech s různým di.


Další informace o konferenci Hw-list