首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

下面的代码,strcpy_s(src[i],"Hello");对字符型二维数组进展赋值的时候一定要进行字符串的拷贝吗?能不能通过传地址进行地

2013-12-28 
下面的代码,strcpy_s(src[i],Hello)对字符型二维数组进行赋值的时候一定要进行字符串的拷贝吗?能不能通

下面的代码,strcpy_s(src[i],"Hello");对字符型二维数组进行赋值的时候一定要进行字符串的拷贝吗?能不能通过传地址进行地址赋值呢?


#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;

int GetV(char src[][100],int n);
int _tmain(int argc, _TCHAR* argv[])
{
char p[10][100];
GetV(p,10);
for (int i=0;i<10;i++)
{
cout<<p[i]<<endl;
}
system("pause");
return 0;
}



int GetV(char src[][100],int n)
{
for (int i=0;i<n;i++)
{
strcpy_s(src[i],"Hello");
}
return 0;
}

[解决办法]
完全可以的啊!用地址比拷贝高效呢!

[解决办法]
看你要干什么了, 这两个逻辑上完全不一样.
如果是拷值, 10个字符串都有独立的空间, 后续修改某个字符串, 其他的不受影响.
如果是传地址, 10个字符串指向相同的空间, 后续修改某个字符串, 其他的也跟着全变了.

象这个例子这样, 不再进行修改的, 就都一样.
[解决办法]
C++ 标准库的string,VC MFC类库的 CString,二者兼用。
因为他有引用计数,采用写时拷贝策略。

所以,根据需要,想传地址就传地址,想拷贝内容就拷贝内容。

没有谁规定,一定要深拷贝或者浅拷贝。

具体到实际编写代码,根据需要,和公司制定的代码规范处理。
 

热点排行