星语心愉 level
获赞
154
粉丝
2
关注
1
看过 TA
0
华南理工大学
2018
测试工程师
IP属地:广东
暂未填写个人简介
私信
关注
2017-05-11 17:29
已编辑
华南理工大学 测试工程师
把数组排成最小的数 【题目】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 代码如下: const int g_MaxNumberLength = 10; char *g_StrCombine1 = new char[g_MaxNumberLength * 2 + 1]; char *g_StrCombine2 = new char[g_MaxNumberLength * 2 + 1]; int compar(const void* strNumber1, con...
星语心愉:【问题解决】 某大神说:假设size=10,那么char **strNumbers=(char**)(new int[size]),strNumbers指向分配区域大小为10*4=40。如果地址值是32位,这个strNumbers[i]读取正常;但是地址值是64位时,strNumber读到i=5时就会发生地址越界错误。内存地址是32位时,指针大小就是4个字节;内存地址是64位时,指针大小是8个字节。 而我的VS2013用的是win32控制台应用程序。 牛客网看来是64位的咯。 改成:char **strNumbers = (char**)(new long[size]);  或者:char **strNumbers=new char*[size]; 或者:char* strNumbers[1000]; 都可以通过。 不过,以后还是用string类型省心,指针太容易出错了。
投递牛客等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务