Domande sul linguaggio SI - pagina 2

 

Grazie, amo già questa lingua.

Ci vuole un po' di tempo per prenderci la mano, i consigli sono utili sull'argomento

Non so se ha importanza, ma è c invece di c++.
 
#include "pch.h"
#include <iostream>
#include <cstdlib>

using namespace std;

int* Foo(int i)
{
        int* x = (int*)malloc (sizeof(int));
        *x = i;
        return x;
}

int main()
{
        int* x = Foo(5);
        cout << *x;
        free (x);
        return 0;
}

E questo è lo stesso, ma in stile C.

 

Gli esempi, a proposito, saranno tutti da quihttps://minepy.readthedocs.io/en/latest/libmine.html

è in fase di porting per un riscaldamento

C API — minepy 1.2.4.dev documentation
  • minepy.readthedocs.io
This chapter describes the mine C library. These functions and structures are declared in the header file , located in the folder. You need to add in your C source files and link your program with . Defines¶ EST_MIC_APPROX ¶ Original estimator described in DOI: 10.1126/science.1205438. EST_MIC_E ¶ Estimator described in DOI: arXiv:1505.02213...
 
Vladimir Simakov:

Ho allocato la memoria all'interno della funzione e l'ho rilasciata nell'ambito della variabile a cui ho passato il riferimento.

Non ho visto il tuo post, apparentemente stavi scrivendo allo stesso tempo di me, stavo cercando di spiegare la stessa cosa

È così che ho imparato a lavorare con i puntatori 20 anni fa, quando studiavo C++:

- dichiarare un puntatore - il valore del puntatore è l'indirizzo di una cella di memoria

- dereferenziando un puntatore si ottiene un valore che viene memorizzato in una cella di memoria dall'indirizzo uguale al puntatore

- Quando si dereferenzia un puntatore, verrà inghiottito (scritto) esattamente il numero di byte che descrive il tipo di puntatore. Se il tipo di puntatore è semplice (int, double...), lavoreremo con 4 o 8 byte - qui è molto semplice. Se abbiamo un tipo complesso - struttura, verrà eseguita un'operazione simile - lavoro con celle di memoria.


circa così, come si dice "sulle dita" ))))


SZZ: I puntatori a oggetti e funzioni funzionano in modo simile, ma le chiamate a funzioni (metodi) sono formate in aggiunta, cioè invece di lavorare con i dati, il compilatore chiamerà una funzione quando dereferenzia il puntatore

 
Igor Makanu:

Non ho visto il tuo post, apparentemente stavi scrivendo allo stesso tempo di me, stavo cercando di spiegare la stessa cosa

È così che ho imparato a lavorare con i puntatori 20 anni fa, quando studiavo C++:

- dichiarare un puntatore - il valore del puntatore è l'indirizzo di una cella di memoria

- dereferenziando un puntatore si ottiene un valore che viene memorizzato in una cella di memoria dall'indirizzo uguale al puntatore

- Quando si dereferenzia un puntatore, verrà inghiottito (scritto) esattamente il numero di byte che descrive il tipo di puntatore. Se il tipo di puntatore è semplice (int, double...), lavoreremo con 4 o 8 byte - qui è molto semplice. Se abbiamo un tipo complesso - struttura, verrà eseguita un'operazione simile - lavoro con celle di memoria.


circa così, come si dice "sulle dita" ))))


SZZ: I puntatori agli oggetti e alle funzioni funzionano in modo simile, ma le chiamate a funzioni (metodi) sono formate in aggiunta, cioè invece di lavorare con i dati, il compilatore chiama una funzione quando dereferenzia il puntatore.

No. La funzione restituirà il puntatore alla memoria allocata all'interno della funzione. Quando si dereferenzia il puntatore, non ci sarà nessuna chiamata di funzione aggiuntiva perché il puntatore è l'indirizzo del primo byte dell'entità in memoria.

Quando si libera la memoria, il gestore di memoria segnerà la memoria sul riferimento come libera + la dimensione del tipo e questo è tutto.

 
Vladimir Simakov:

No. La funzione restituirà un puntatore alla memoria, che sarà allocata all'interno della funzione. E quando si dereferenzia il puntatore, non ci sarà nessuna chiamata di funzione supplementare perché il puntatore è il valore dell'indirizzo del primo byte dell'entità in memoria.

Quando si libera la memoria, il gestore di memoria segnerà la memoria sul riferimento come libera + la dimensione del tipo e questo è tutto.

Ho scritto i principi generali di come funzionano i puntatori,

Ok, fermiamoci qui, altrimenti il topicstarter si impantanerà in discussioni su chi ha scritto e cosa ha pensato

SZS: dico sempre che non sono molto bravo a spiegare, ecco un esempio di quello che ho scrittohttps://metanit.com/sharp/tutorial/8.3.php , la sintassi di Sharpe funziona allo stesso modo

Указатели | C#
  • metanit.com
Если вы программировали на С/С++, то, возможно, вы знакомы с таким понятием как . Указатели позволяют получить доступ к определенной ячейке памяти и произвести определенные манипуляции со значением, хранящимся в этой ячейке. В языке C# указатели очень редко используются, однако в некоторых случаях можно прибегать к ним для оптимизации...
 
Maxim Dmitrievsky:
void quicksort(double *a, int *idx, int l, int u)
{
  int i, m, idx_temp;
  double a_temp;

  if (l >= u)
    return;

  m = l;
  for (i=l+1; i<=u; i++)
    {
      if (a[i] < a[l])
        {
          ++m;

          idx_temp = idx[m];
          idx[m] = idx[i];
          idx[i] = idx_temp;

          a_temp = a[m];
          a[m] = a[i];
          a[i] = a_temp;
        }
    }

  idx_temp = idx[l];
  idx[l] = idx[m];
  idx[m] = idx_temp;

  a_temp = a[l];
  a[l] = a[m];
  a[m] = a_temp;

  quicksort(a, idx, l, m-1);
  quicksort(a, idx, m+1, u);
}

Non è più facile?

#python

list.sort()

Vedere di sicurohttps://www.youtube.com/watch?v=vHeeXI84GIA

Smettila di fluttuare da un articolo all'altro, da una lingua all'altra, prendi in mano la situazione.

 
Кеша Рутов:

Non è più facile?

#python

list.sort()

Dai un'occhiata di sicurohttps://www.youtube.com/watch?v=vHeeXI84GIA

Smettila di fluttuare da un articolo all'altro, da una lingua all'altra, prendi in mano la situazione.

Da dove pensate che provenga il pitone stesso?

Assicuratevi di dare un'occhiata... e ricercato ulteriormente i link, ha trovato - "A SCUOLA PIÙ DI 10 GIORNI DI LEZIONI VIDEO"... ha riso... è andato avanti))

 
Dmitry Fedoseev:

Da dove pensate che provenga il pitone stesso?

Sicuramente l'ho cercato... e ricercato ulteriormente i link, ha trovato - "A SCUOLA PIÙ DI 10 GIORNI DI LEZIONI VIDEO"... ha riso... è andato avanti))

Bene, scrivi in C o, meglio, in Asembler, sistemi di trading e machine learning. Ne parleremo tra 100 anni, nella prossima vita, quando scriverai il primo prototipo...


Non sono contro C e ASM, la domanda è: per quale scopo? Firewares, OS, controller, nuovi kernel, ecc... Niente da fare, ma il software applicativo C è difficile, non ci sono thread C, tutto è diverso per i diversi OS, questo non è un forum per scrivere firewares e virus, per TC e MO lo standard mondiale è python, in un pizzico java/sysharp. E Maxim è un noto navigatore di Internet, basta navigare in giro alla ricerca di "interessante", come un bambino in età prescolare, qua e là, leggendo abstract, raccogliendo parole intelligenti per apparire scientifico e cercando di più, tale attività non finisce bene, per un uomo adulto, si può solo ingannare se stessi. Se avesse finito le fonti di reddito e dovesse affrontare la LIFE, non riuscirebbe nemmeno a farsi assumere gratuitamente in un ufficio provinciale e dovrebbe passare al settore dei servizi dove c'è una concorrenza spietata, ma almeno ha smaltito la sbornia.

 
Кеша Рутов:

Bene, scrivi in C, o preferibilmente in Asembler, sistemi di trading e apprendimento automatico, ne parleremo tra 100 anni, nella prossima vita, quando scriverai il tuo primo prototipo...


Non sono contro C e ASM, la domanda è: per quale scopo? Firewares, OS, controller, nuovi kernel, ecc... Niente da fare, ma il software applicativo C è difficile, non ci sono thread C, tutto è diverso per i diversi OS, questo non è un forum per scrivere firewares e virus, per TC e MO lo standard mondiale è python, in un pizzico java/sysharp. E Maxim è un noto navigatore di Internet, basta navigare in giro alla ricerca di "interessante", come un bambino in età prescolare, qua e là, leggendo abstract, raccogliendo parole intelligenti per apparire scientifico e cercando di più, tale attività non finisce bene, per un uomo adulto, si può solo ingannare se stessi. Se avesse finito le fonti di reddito e dovesse affrontare la LIFE, non riuscirebbe nemmeno a farsi assumere gratuitamente in un ufficio provinciale e dovrebbe passare al settore dei servizi dove c'è una concorrenza spietata, ma almeno ha smaltito la sbornia.

E cosa non ti piace del C++ dall'11° standard? Sono d'accordo su C, ma i plus moderni sembrano molto buoni. È solo che C/C++ è più vicino all'hardware e uno dovrebbe tenerlo a mente e non solo scrivere in questo stile: "Ehi, hardware, dammi questo, dammi quello". Alla fine, tutte queste funzionalità o in una forma o nell'altra sono già disponibili in STL, o possono essere implementate senza problemi, ma il lavoro diretto con la memoria in tutti questi framework non è certamente possibile.

Motivazione: