2015-04-27 230 views
0

我想的雙維數組到現在,如果這是聲明字符串C中的數組,像這樣一個正確的方法:聲明字符串

#include <stdio.h> 
#include <string.h> 
#define rows 6 
#define colu 2 

char* bdato [rows][colu]={/*here using the pointer, I'm not sure*/ 
{"tc","Torta Cubana "}, 
{"th","Torta Huatulco"}, 
{"tm","Torta Mexicana"}, 
{"tr","Torta Rusa "}, 
{"r ","Refresco  "}, 
{"a ","Agua sabor "}}; 

int impri(){ 
    int x; 
    for (x=0;x<6;x+=1) { 
    printf("%s %s \n",bdato[x][0],bdato[x][1]); 
    } 
    return 0; 
} 
+0

是的。還要別的嗎? – Axalo

+0

我在網上看,看到這樣的東西不是一個正確的方式來聲明它,因爲我沒有讀取數據只有方向,它使用malloc更好,但我學習,所以我不知道。這是我第一週學習編程 – user2461687

+0

這取決於你想要做什麼。它與一維數組基本相同。見[這裏](http://stackoverflow.com/questions/11241014/malloc-or-normal-array-definition)和[這裏](http://stackoverflow.com/questions/3269627/c-local-array-定義抗α-malloc的呼叫?RQ = 1)。 – Axalo

回答

1

句法上講是正確的。雖然每當你聲明一個字符串文字的指針,你應該聲明它爲const,因爲試圖修改字符串文字的內存位置是未定義的行爲(一個bug)。

如果您需要其他人查看您的代碼(例如,在提問時提出問題),將它定義爲英語變量和函數的習慣也是明智的做法。

至於是否存儲這樣的數據是否正確,取決於你想要對數據做什麼。如果你想讓你的字符串在一個簡單的數據庫中彼此相關一樣,它可能是最好創建結構的一維數組,以表明對字符串的是相關的:

typedef struct 
{ 
    const char* something; 
    const char* something_else; 
} my_struct_t; 

my_struct_t data [X] = 
{ 
    {"tc","Torta Cubana "}, 
    {"th","Torta Huatulco"}, 
    ... 
}; 

(當然在實際應用中,你會給變量賦予更有意義的名稱)

+0

謝謝這對我有用 – user2461687