前些天做一个工具要用到数组,本来是用CStringArray的,但后来发现破漏百出,只好用回原始的方法了,现在写一篇文章,算是做笔记 #include <ostream.h> #include "string.h" int main(int argc, char* argv[]) { int i = 0; char **pStringList = NULL; // 动态二维数组用两个“*” char *pString = NULL; // 一维数用一个“*” pStringList = new char *[3]; // 设定二维数组的行数,注意方括号前有个“*”,指向一维数组首地址 pString = new char [512]; // 申请一维数组大小,可以随便填,要保证足够存放字符串 strcpy(pString, "Hello World!"); pStringList[0] = pString; // 将一维数组的首地址赋给二维数组的第一行 pString = new char [512]; strcpy(pString, "I'm bllqbz"); pStringList[1] = pString; pString = new char [512]; strcpy(pString, "My QQ is 569742950"); pStringList[2] = pString; for(i=0;i<3;i++) // 输出所有字串 cout<<pStringList[i]<<endl; // 这里用pStringList[i]指向的是第i行字串的首地址 // 如果用pStringList[i][n]输出的是第i行,第n个元素 for(i=0;i<3;i++) // 释放申请的内存 { delete [] pStringList[i]; // 要先删除第i行所指向的一维数组 pStringList[i] = NULL; } delete [] pStringList; // 删除整个数组 pStringList = NULL; return 0; }