簡體   English   中英

2D char指針數組->分段錯誤?

[英]2D array of char pointers --> Segmentation fault?

我必須創建一個二維數組的char指針。 該數組將存儲一個名稱和姓氏列表-第0行將包含名稱,第1行將包含姓氏。 這是我到目前為止編寫的代碼(此文件包含在主文件中):

#include "myFunction.h"
#include <iostream>
#include <string.h>

using namespace std;

char ***persons;

void createArray(int n)
{
   *persons = new char * int[n];
   for(int i=0; i<n; i++)
      *persons[i]=new char[n];
}

並且main通過以下命令調用此函數:

createArray(3);

但是當我運行它時,我不斷收到“細分錯誤”,我不知道為什么

我怎樣才能解決這個問題?

如果您使用的是c ++,請考慮使用2D std :: string數組,因為這樣做會更清潔一些。 而且,多維數組總是令人恐懼,因為它們使代碼不可讀並引起很多混亂(因為您通常不會混淆哪個維代表什么)。 因此,我強烈建議您考慮為每個人使用一個結構(具有2個字段,first_name和last_name)。

無論如何,如果您想采用自己的方法,請按以下步驟進行:

char*** people;

int n = 2;  // two elements, name and surname
int m = 5;  // number of people

people = new char**[m];
for (int i = 0; i < m; i++) {
  people[i] = new char*[n];
}

不要使指針成為全局指針。 這行讓我很尷尬...

*persons = new char * int[n];

我認為這是不對的。 “ *”在這里是多余的。 也許是吧?

persons = new char * int[n];

但是我不知道。

我應該評論一下,這聽起來似乎不是使用多維數組,而是應該使用結構數組,並使用具有名字和姓氏的成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM