Fragen zur SI-Sprache - Seite 2

 

Danke, ich liebe diese Sprache jetzt schon.

Es dauert ein wenig, bis man den Dreh raus hat, die Tipps zum Thema sind nützlich

Ich weiß nicht, ob es wichtig ist, aber es ist C statt 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;
}

Und dies ist dasselbe, aber im C-Stil.

 

Die Beispiele werden übrigens alle von hier stammen:https://minepy.readthedocs.io/en/latest/libmine.html

es wird für eine Aufwärmphase portiert

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:

Ich habe innerhalb der Funktion Speicher zugewiesen und ihn im Bereich der Variablen freigegeben, an die ich den Verweis übergeben habe.

Ich habe Ihren Beitrag nicht gesehen, anscheinend haben Sie zur gleichen Zeit wie ich geschrieben, ich habe versucht, das Gleiche zu erklären

So habe ich vor 20 Jahren gelernt, mit Zeigern zu arbeiten, als ich C++ studierte:

- einen Zeiger deklarieren - der Wert des Zeigers ist eine Speicherzellenadresse

- die Dereferenzierung eines Zeigers ergibt einen Wert, der in einer Speicherzelle an der Adresse des Zeigers gespeichert wird

- Bei der Dereferenzierung eines Zeigers wird genau die Anzahl von Bytes verschluckt (geschrieben), die den Zeigertyp beschreibt. Wenn der Zeigertyp einfach ist (int, double...), werden wir mit 4 oder 8 Bytes arbeiten - hier ist es sehr einfach. Wenn wir einen komplexen Typ haben - Struktur, wird eine ähnliche Operation durchgeführt - Arbeit mit Speicherzellen.


ungefähr so, wie man sagt "auf die Finger" ))))


SZZ: Zeiger auf Objekte und Funktionen funktionieren ähnlich, aber Funktions(methoden)aufrufe werden zusätzlich gebildet, d.h. statt mit Daten zu arbeiten, ruft der Compiler beim Dereferenzieren des Zeigers die Funktion auf

 
Igor Makanu:

Ich habe Ihren Beitrag nicht gesehen, anscheinend haben Sie zur gleichen Zeit wie ich geschrieben, ich habe versucht, das Gleiche zu erklären

So habe ich vor 20 Jahren gelernt, mit Zeigern zu arbeiten, als ich C++ studierte:

- einen Zeiger deklarieren - der Wert des Zeigers ist eine Speicherzellenadresse

- die Dereferenzierung eines Zeigers ergibt einen Wert, der in einer Speicherzelle an der Adresse des Zeigers gespeichert wird

- Bei der Dereferenzierung eines Zeigers wird genau die Anzahl von Bytes verschluckt (geschrieben), die den Zeigertyp beschreibt. Wenn der Zeigertyp einfach ist (int, double...), werden wir mit 4 oder 8 Bytes arbeiten - hier ist es sehr einfach. Wenn wir einen komplexen Typ haben - Struktur, wird eine ähnliche Operation durchgeführt - Arbeit mit Speicherzellen.


ungefähr so, wie man sagt "auf die Finger" ))))


SZZ: Zeiger auf Objekte und Funktionen funktionieren ähnlich, aber Funktions(methoden)aufrufe werden zusätzlich gebildet, d.h. statt mit Daten zu arbeiten, ruft der Compiler beim Dereferenzieren des Zeigers eine Funktion auf.

Nein. Die Funktion gibt den Zeiger auf den innerhalb der Funktion zugewiesenen Speicher zurück. Beim Dereferenzieren des Zeigers erfolgt kein zusätzlicher Funktionsaufruf, da der Zeiger die Adresse des ersten Bytes der Entität im Speicher ist.

Beim Freigeben von Speicher markiert der Speichermanager den Speicher auf der Referenz als frei + Typgröße und das war's.

 
Vladimir Simakov:

Nein. Die Funktion gibt einen Zeiger auf den Speicher zurück, der innerhalb der Funktion zugewiesen wird. Und wenn der Zeiger dereferenziert wird, erfolgt kein zusätzlicher Funktionsaufruf, da der Zeiger den Wert der Adresse des ersten Bytes der Entität im Speicher hat.

Beim Freigeben von Speicher markiert der Speichermanager den Speicher auf der Referenz als frei + Typgröße und das war's.

Ich habe die allgemeinen Grundsätze für die Funktionsweise von Zeigern beschrieben,

Ok, hören wir hier auf, sonst verzettelt sich der Themenstarter in Diskussionen darüber, wer geschrieben hat und was er dachte

SZS: Ich sage immer, dass ich nicht sehr gut im Erklären bin, hier ist ein Beispiel für das, was ich geschrieben habehttps://metanit.com/sharp/tutorial/8.3.php , die Sharpe-Syntax funktioniert genauso

Указатели | 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);
}

Ist das nicht einfacher?

#python

list.sort()

Siehe mit Sicherheithttps://www.youtube.com/watch?v=vHeeXI84GIA

Hören Sie auf, von einem Artikel zum anderen zu springen, von einer Sprache zur anderen, und nehmen Sie sich zusammen.

 
Кеша Рутов:

Ist das nicht einfacher?

#python

list.sort()

Siehe mit Sicherheithttps://www.youtube.com/watch?v=vHeeXI84GIA

Hören Sie auf, von einem Artikel zum anderen zu springen, von einer Sprache zur anderen, und nehmen Sie sich zusammen.

Was glauben Sie, woher die Python selbst stammt?

Schauen Sie sich das unbedingt an... und recherchierte die Links weiter, fand - "IN SCHOOL MORE THAN 10 DAYS OF VIDEO LESSONS"... lachte... weitergezogen))

 
Dmitry Fedoseev:

Was glauben Sie, woher die Python selbst stammt?

Ich habe es auf jeden Fall nachgeschlagen... und recherchierte die Links weiter, fand - "IN SCHOOL MORE THAN 10 DAYS OF VIDEO LESSONS"... lachte... weitergezogen))

Nun, schreiben Sie in C oder besser in Asembler, Handelssysteme und maschinelles Lernen. Wir werden in 100 Jahren reden, im nächsten Leben, wenn Sie den ersten Prototyp schreiben...


Ich habe nichts gegen C und ASM, die Frage ist nur, zu welchem Zweck? Firewares, Betriebssysteme, Controller, neue Kernel, etc... Auf keinen Fall, aber die C-Anwendungssoftware ist schwierig, es gibt keine C-Threads, alles ist für verschiedene Betriebssysteme unterschiedlich, dies ist kein Forum für das Schreiben von Firewares und Viren, für TC und ME ist der Weltstandard Python, notfalls Java/Sysharp. Und Maxim ist ein bekannter Internet-Surfer, der auf der Suche nach "Interessantem" wie ein Vorschulkind hier und da herumstöbert, Zusammenfassungen liest, kluge Worte aufschnappt, um wissenschaftlich zu erscheinen und nach mehr zu suchen, eine solche Tätigkeit geht nicht gut aus, für einen erwachsenen Mann kann man sich nur etwas vormachen. Wenn er keine Einnahmequellen mehr hätte und mit LIFE konfrontiert wäre, würde er nicht einmal in einem Provinzbüro umsonst eingestellt werden und müsste in den Dienstleistungssektor wechseln, wo ein harter Wettbewerb herrscht, aber er ist zumindest nüchtern geworden.

 
Кеша Рутов:

Nun, schreiben Sie in C, oder vorzugsweise in Asembler, Handelssysteme und maschinelles Lernen, wir werden in 100 Jahren reden, im nächsten Leben, wenn Sie Ihren ersten Prototyp schreiben...


Ich habe nichts gegen C und ASM, die Frage ist nur, zu welchem Zweck? Firewares, Betriebssysteme, Controller, neue Kernel, etc... Auf keinen Fall, aber die C-Anwendungssoftware ist schwer, es gibt keine C-Threads, alles ist für verschiedene Betriebssysteme unterschiedlich, dies ist kein Forum für das Schreiben von Firewares und Viren, für TC und MO ist der Weltstandard Python, notfalls Java/Sysharp. Und Maxim ist ein bekannter Internet-Surfer, der auf der Suche nach "Interessantem" wie ein Vorschulkind hier und da herumstöbert, Zusammenfassungen liest, kluge Worte aufschnappt, um wissenschaftlich zu erscheinen und nach mehr zu suchen, eine solche Tätigkeit geht nicht gut aus, für einen erwachsenen Mann kann man sich nur etwas vormachen. Wenn er keine Einnahmequellen mehr hätte und mit LIFE konfrontiert wäre, würde er nicht einmal in einem Provinzbüro umsonst eingestellt werden und müsste in den Dienstleistungssektor wechseln, wo ein harter Wettbewerb herrscht, aber er ist zumindest nüchtern geworden.

Und was gefällt Ihnen an C++ seit dem 11. Standard nicht? Ich stimme mit C überein, aber die modernen Pluspunkte sehen sehr gut aus. Es ist nur so, dass C/C++ näher an der Hardware ist und man sollte dies im Hinterkopf behalten und nicht einfach in diesem Stil schreiben: "Hey, Hardware, gib mir dies, gib mir das". Letztlich sind alle diese Funktionen in der einen oder anderen Form bereits in der STL vorhanden oder können problemlos implementiert werden, aber die direkte Arbeit mit dem Speicher ist in all diesen Frameworks nicht unbedingt möglich.