Aus einem Buch, das Programmierer lernen können ... (Python): Zeiger

Diesmal ist es also eine Zeigeroperation Um Zeiger in Python zu verwenden, könnte ich Code in Python schreiben, ohne darüber nachzudenken. Ich habe nicht viel gelernt, aber ich werde beschreiben, was ich untersucht habe.

Nach vielen Recherchen fand ich etwas namens ctypes - Externe Funktionsbibliothek für Python. Ich war dankbar, dies zu sehen, da das Tutorial auf Japanisch war, aber da es eine Verwendungsmethode unter Windows war, suchte ich nach verschiedenen Möglichkeiten, es unter Mac [stacoverflow] zu verwenden (http://stackoverflow.com/questions/). 11554355 / mac-os-x-lion-python-ctype-cdll-error-lib-so-6-image-not-found).

Ich habe versucht, es in meiner eigenen Umgebung zu verwenden, daher werde ich es beschreiben.

>>> from ctypes import *
>>> cdll.LoadLibrary("libc.dylib")
<CDLL 'libc.dylib', handle 7fff6903da98 at 0x1052f6fd0>
>>> libc = CDLL("libc.dylib")
>>> printf = libc.printf
>>> printf(b"Hello, %s\n", b"World!")
Hello, World!
14
>>> strchr = libc.strchr
>>> strchr(b"abcdef", ord("d"))
87110915
>>> 

Als wichtiges Thema

Erstellen Sie eine append () -Funktion

Es war das, Die folgende Antwort durch Bearbeiten des Array-C ++ - Codes

void append(arrayString& s, char c){
    int oldLength = 0;
    while(s[oldLength] != 0) {
        oldLength++;
    }
    arrayString newS = new char[oldLength + 2];
    for(int i = 0; i < oldLength; i++) {
        newS[i] = s[i];
    }
    newS[oldLength] = c;
    newS[oldLength + 1] = 0;
    delete[] s;
    s = newS;
}

Mein Python-Code
#!/usr/bin/env python
#coding:utf-8

#ctypes Modul(Für Mac)
from ctypes import *
#cdll.LoadLibrary("libc.dylib")
#libc = CDLL("libc.dylib")

def add(s,c):
    print('Vorherige Zeichenfolge:',list(s))
    print('Vorheriger Zeiger:', c_wchar_p(s))
    newlength = len(s)+2
    newS = []
    for i in s:
        newS += i
    for j in c:
        newS += j
    print('Nach der Zeichenfolge:',newS)
    print('Späterer Zeiger:', c_wchar_p(str(newS)))

>>>(Ausführungsterminal)
>>> from test38 import add
>>> add("test","! ")
Vorherige Zeichenfolge:['t', 'e', 's', 't']
Vorheriger Zeiger: c_wchar_p(140481723952464)
Nach der Zeichenfolge:['t', 'e', 's', 't', '!', ' ']
Nach dem Zeiger: c_wchar_p(140481723970864)
>>> 

Ich brauchte das ctypes-Modul nicht wirklich, aber ich habe gelernt, dass Python auch C verwenden kann.

Recommended Posts

Aus einem Buch, das Programmierer lernen können ... (Python): Zeiger
Aus einem Buch, das Programmierer lernen können ... (Python): Über das Sortieren
Aus einem Buch, das Programmierer lernen können (Python): Nachrichten dekodieren
Aus einem Buch, das der Programmierer lernen kann ... (Python): Finden Sie den häufigsten Wert
Aus einem Buch, das Programmierer lernen können ... (Python): Überprüfung von Arrays
Aus einem Buch, das Programmierer lernen können (Python): Statistischer Verarbeitungsabweichungswert
Aus einem Buch, das der Programmierer lernen kann ... (Python): Bedingte Suche (Maximalwert)
Aus einem Buch, das Programmierer lernen können (Python): Klassendeklaration (öffentlich / privat usw.)
Aus einem Buch, in dem die Gedanken des Programmierers gelernt werden können: Fassen Sie die Teile kleiner Probleme zusammen
Aus einem Buch, das der Programmierer lernen kann ... Überprüfung der Runenprüfsumme (feste Länge)
Aus einem Buch, das der Programmierer lernen kann ... Überprüfung der Runenprüfsumme (variable Länge) Teil 2
Aus einem Buch, das der Programmierer lernen kann ... Konvertieren von Zeichen, die Zahlen darstellen, in einen ganzzahligen Typ
Aus einem Buch, das die Denkweise des Programmierers interessanterweise gelernt hat (Python)
"Python Kit", das Python-Skripte von Swift aufruft
Ich habe ein Docker-Image erstellt, das FBX SDK Python von Node.js aus aufrufen kann
Die Denkweise des Programmierers stammt aus dem XX. Buch (Python)
"Ein Buch, das Flask von Grund auf versteht" Memo lesen
Die Denkweise des Programmierers stammt aus dem XX. Buch (Python)
Ein Mechanismus zum Aufrufen von Ruby-Methoden aus Python, der in 200 Zeilen ausgeführt werden kann
Ein Memo, das mit Python & Spark Daten aus dashDB liest
Python-Programm von "Buch, das schwieriges Programmieren leicht lehrt"
Python-Bedingungsextraktion aus der Liste, die ich oft vergesse
Python-Programm, das die Zeitnutzung aus icalendar-Daten aggregiert
[Python] Erstellen Sie ein Diagramm, das mit Plotly verschoben werden kann
Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann
Berühren Sie Python-Objekte in Elixir
Lassen Sie uns ein Kindle-Buch erstellen, das mathematische Formeln aus TeX-Dateien visualisiert
Erstellt eine Bibliothek für Python, die die morphologische Teilung problemlos handhaben kann
Über psd-tools, eine Bibliothek, die psd-Dateien in Python verarbeiten kann
Python / Machen Sie ein Diktat aus einer Liste.
Ich habe ein Shuffle gemacht, das mit Python zurückgesetzt (zurückgesetzt) werden kann
[Python-Algorithmus] Ein Programm, das einige deutsche Antworten aus einer Suche mit Tiefenpriorität ausgibt
[Python] Ich habe eine Klasse erstellt, die schnell einen Dateibaum schreiben kann
Ich habe eine generische Python-Projektvorlage erstellt
[Python] Ein Programm, das ein Paar findet, das durch einen bestimmten Wert geteilt werden kann
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
Versuchen Sie es mit APSW, einer Python-Bibliothek, die SQLite ernst nehmen kann
[Python] Ich habe ein Dienstprogramm erstellt, das wie ein Pfad auf den Diktattyp zugreifen kann
Ich habe einen einfachen Timer erstellt, der vom Terminal aus gestartet werden kann
Erstellen Sie eine virtuelle Python-Umgebung, die jeder im September 2016 verstehen kann (pyenv + virutalenv).
Ich habe ein Modul PyNanaco erstellt, das Nanaco-Guthaben mit Python belasten kann
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
[Python] Ein Programm, das Treppen mit # erstellt
# 5 [python3] Extrahiert Zeichen aus einer Zeichenfolge
Erstellen Sie eine Deb-Datei aus einem Python-Paket
[Python] Erstellen Sie einen LineBot, der regelmäßig ausgeführt wird
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Verwenden Sie Django aus einem lokalen Python-Skript
Eine typisierte Welt, die mit Python beginnt
Bearbeiten Sie BigQuery-Tabellen von einem Python-Client aus
Ein Programm, das Python zum Abspielen von Junk verwendet
Aufrufbefehle von Python (Windows Edition)
[Python] Ein Programm, das die Partitur rundet
Klasse für PYTHON, die ohne Kenntnis von LDAP betrieben werden kann
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.