动态字符串数组相关定义,c++,c

C语言
动态定义二维字符串数组:

	char **arr = (char **)malloc(pow(2,n)*sizeof(char*));	//申请一组一维指针空间

	for( i = 0; i < pow(2, n); i++ )	//对于每一个一维指针空间,申请一行n个数据空间
	{
    
    
		arr[i] = (char *)malloc(n*sizeof(char));
	}

函数返回二维字符串数组:

char **graCode(int n)
{
    
    
	int i;
	char **arr = (char **)malloc(pow(2,n)*sizeof(char*));	//申请一组一维指针空间

	for( i = 0; i < pow(2, n); i++ )	//对于每一个一维指针空间,申请一行n个数据空间
	{
    
    
		arr[i] = (char *)malloc(n*sizeof(char));
	}

	if( n == 1 )
	{
    
    
		arr[0][0] = '0';
		arr[1][0] = '1';

		return arr;
	}
}
//最后要释放malloc

字符串连接函数strncat:

**
库函数strncat()函数也可用于连接字符串,但是该函数要求指明在原字符串末尾附加的目标字符串长度。strncat()函数的原型是:
char * strncat(char *str1,const char str2,size_t_n);
如果str2的字符数大于n,那么该函数只将str2的前n个字符附加在str1末尾,如果str2中的字符数小于n,该字符会将str2的所有字符附加在str1末尾。无论哪种情况,都会在新字符串的末尾添加空字符。必须为str1分配足够的空间以存储新的字符串。strncat()函数返回指向str1的指针。

C++
动态定义字符串数组:

string* arr = new string[pow(2, n)];	//动态定义字符串数组

函数返回字符串数组:

string* graCode(int n)
{
    
    
	string* arr = new string[pow(2, n)];	//动态定义字符串数组

	if (n == 1)	//递归出口
	{
    
    
		arr[0] = "0 ";
		arr[1] = "1 ";
		return arr;	//返回字符串首地址
	}

如何使用函数返回的字符串数组(类似下面这样):

for (int i = 0; i < pow(2, n); i++)
	{
    
    
		cout<<*(graCode(n)+i);	//输出每个字符串
	}

字符串自带插入函数:

arr[i].insert(arr[i].begin(), str1);//字符str1插入到第i字符串最前面

C++中字符串可以直接赋值:

arr[i] = pre[i] ;	//逐个将数组pre中字符串赋值给数组arr的前2^(n-1)个位置 ,

有任何其他补充内容希望小伙伴在下方留言

猜你喜欢

转载自blog.csdn.net/angelsweet/article/details/111603559