C/C++ 二维动态数组的分配和赋值

本文介绍了在Visual Studio 2013环境下如何进行二维动态数组的分配和赋值,针对在线笔试中可能出现的问题提供了解决方案,特别是针对二维数组的创建进行了详细说明。


平台:Visual Studio 2013


近期找工作中,错过了阿里和腾讯的笔试,百度的笔试也让我措手不及。还好有个赛码网能让我练练在线笔试题。 最近笔试题总是会调试不出来,主要是存在着输入输出不熟悉以及不知道二维数组如何建立。

先解决二维数组的建立问题~

明晚小米笔试加油~


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int main()
{
	//C语言
	/*int a,b;
		scanf("%d %d\n", &a, &b);
		int **array;
		array = (int **)malloc(b*sizeof(int *));
		for (int i = 0; i < b;i++)
		{
		array[i] = (int*)malloc(a*sizeof(int));
		}
		for (int i = 0; i < b; i++)
		{
		for (int j = 0; j < a; j++)
		scanf("%d", &array[i][j]);

		}*/

	//C++
	//经测试(对比旧电脑demo+baidutest项目中的二维数组.cpp),若cin后没有代码,二维数组会无限输入下去  所以要在输入之后搞点事情才行
	int a, b; 
	while (cin >>a>>b)
	{
		int **array = new int*[a];
		for (int i = 0; i < b; i++)
		{
			array[i] = new int[b];
		}	
		for (int i = 0; i < a; i++)
		{
			for (int j = 0; j < b; j++)
	
C++中,二维字符数组可以看作是一个矩阵形式的字符集合。对于如何对二维字符数组进行初始化赋值操作,我们可以采用多种方式进行处理。 ### 方法一:直接在声明时初始化 如果我们在定义二维字符数组的同时就确定了其内容,可以直接通过大括号 `{}` 来完成初始值设定: ```cpp char arr[3][5] = { {'h', 'e', 'l', 'l', 'o'}, {'w', 'o', 'r', 'l', 'd'}, {'t', 'e', 's', 't', '\0'} }; ``` 这里我们创建了一个 `3x5` 的二维字符数组,并分别对其每行进行了赋值。 --- ### 方法二:逐行赋值 如果你是在程序运行过程中动态地给二维字符数组赋值,则需要逐行列出并逐一元素赋值。例如下面的例子展示的是一个简单的循环实现过程: ```cpp #include <iostream> using namespace std; int main() { char arr[3][5]; // 初始化每一行数据 for (int i=0; i<3; ++i){ for(int j=0; j<4 && cin.get(arr[i][j]); ++j){} // 假设输入字符串长度小于等于4(包括'\n') arr[i][4]='\0';// 确保每个字符串结束符正确设置 } cout << "Array values:" << endl; for (int i=0;i<3;++i) {cout<<arr[i]<<endl;} } ``` 上述代码片段展示了从标准输入读取到二维字符数组的操作。 --- ### 方法三:使用辅助函数来进行赋值 为了简化复杂度较高的场景下对二维字符数组批量赋值的过程,也可以编写自定义函数用于此目的: ```cpp void initializeCharArray(char array[][5], int rows, const string data[]) { for(int r = 0;r <rows ;++r ){ strncpy(array[r],data[r].c_str(),sizeof(array[0])-1); array[r][sizeof(array[0])-1]='\0'; } } int main(){ char c_arr[3][5]; string inputs[]={"one","two","three"}; initializeCharArray(c_arr ,3,inputs); return 0 ; } ``` 在这个例子中,我们利用`strncpy()`函数安全地将字符串复制至目标位置,并保证不会越界访问内存区域。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值