C Programmierung: Zweidimensionale Arrays und Pointer?

Guten Tag,

ich hätte ein paar Fragen zu Pointern im Bezug auf zweidimensionale Arrays und Pointer. Zuerst wollte ich fragen, ob mir jemand die Syntax hinter Pointern für mehrdimensionale Arrays in C erklären kann?

Wenn ich einen Array habe, wie bspw.:

int ary[2][3] = { {1, 2, 3}, {4, 5, 6} };

Nun möchte ich einen Pointer auf diesen Array:

int (*p1)[3] = ary; // Pointer auf int Array der Länge 3
int (*p2)[2][3] = &ary; // Pointer auf 2 dim Array der aus 2 int Arrays der Länge 3 besteht.

Warum werden hier die Indizes hinter dem Pointer geschrieben und nicht etwas wie:

int[2][3] *p2

Wäre das nicht intuitiver? Gibt es hinter der Schreibweise einen logischen Sinn?

Eine weitere Frage zur Syntax wäre, wie man das korrekt aufschreibt, wenn man einen return Value oder einen Funktionsprototypen aus einem Pointer zu einem zweidimensionalen Arrays (mit klar definierter Größe) haben möchte?

Dazu wollte ich noch sichergehen, dass meine Vermutung, warum ich für die Zuweisung bei p2 noch ein & davor hängen muss, die Richtige ist. ary und &ary sind exakt die selben Pointer. Ist es so, weil ary als Pointer auf einen int Array der Länge 3 hinterlegt ist und &ary sozusagen ein Pointer auf einen zweielementigen Array ist, der aus int Arrays der Länge 3 besteht?

Über eine Antwort würde ich mich sehr freuen!

Computer, Technik, programmieren, Informatik, C (Programmiersprache)
Excel Makro, PDF versenden, Anhang klappt nicht?

Hallo, ich würde gerne eine Rechnung mit einem Makro erstellen. Soweit klappt das auch und die Mail öffnet sich auch, aber diese wird nicht als Anhang hinzugefügt. Ich komme leider nicht drauf. Ich denke, es liegt daran, dass er die Datei nicht findet, aber ich wüsste keinen Lösungsansatz. Hier der Code:

Dim Result As VbMsgBoxResult

Sub RechnungsnrUndDrucken()

Sheets("Rechnung_Video").Select

[D15] = [D15] + 1 'Rechnungsnummer 1 hochzählen

  Dim sCC As String

  Dim sName As String

  Dim sText As String

  Dim sObject As String

  Dim sCompany As String

  Dim sRefNr As String

  Dim sTempFileName As String

   

  If (CStr(ThisWorkbook.ActiveSheet.Name) = "Rechnung") Then

    Result = MsgBox("Rechnung fertig?", vbApplicationModal Or vbQuestion Or vbYesNo)

    If Result = vbNo Then Exit Sub

  End If

Const DateiPfad = "C:\Temp\"

  Dim DateiName As String

  

  DateiName = DateiPfad & Range("C15") & Range("D15") & ".pdf"

  Range("A1:F54").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

    DateiName, Quality:=xlQualityStandard, _

 IncludeDocProperties:=True, _

  IgnorePrintAreas:=False, _

  OpenAfterPublish:=False

      

Dim Nachricht As Object, OutApp As Object

Dim AWS As String

Set OutApp = CreateObject("Outlook.Application")

AWS = strFileName

'InitializeOutlook = True

Set Nachricht = OutApp.CreateItem(0)

With Nachricht

.Subject = "" & Range("A1") & "_" & Range("C15") & Range("D15")

.GetInspector.display

'.Attachments.Add ("C:\Temp\" & Range("C15") & Range("D15") & ".pdf")

End With

Set OutApp = Nothing

Set Nachricht = Nothing

End Sub

Computer, Microsoft Excel, E-Mail, Makro

Meistgelesene Beiträge zum Thema Computer