[英]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.