2 liuboman liuboman 于 2014.10.06 21:54 提问

C++ 缩写符号问题简洁写法的错误

编写程序由从标准输入设备读入的元素数据建立一个int 型vector 对象,然后
动态创建一个与该vector 对象大小一致的数组,把vector 对象的所有元素复
制给新的数组
#include<iostream>
#include<vector>
#include<string>
#include<cstring>
using namespace std;
int main()
{
vector<int> temp;
int ival, count = 0;
while (cin >> ival)
{
count++;
temp.push_back(ival);
}
const int cnt = count;
int *p = new int(cnt);
for (vector<int>::iterator iter = temp.begin(); iter != temp.end(); iter++)
{
cout << *iter;
(*p++ )= (*iter);
cout << *p<< endl;
}
system("pause");
/*cin.get();*/
return 1;
}

请问 其中这句(*p++ )= (*iter);有错误吗,这个*p++的表达不是可以吗,结果很诡异,如下

1 2 3 4 5 a
1-33686019
2925405549
3-2147426851
4-572719030
5-572662307
请按任意键继续. . .

1个回答

le1boy
le1boy   2014.10.07 15:47

(*p++ )= (*iter);
你这句话没有错,错的是这句话int *p = new int(cnt);这样不是声明了一个数组,而是声明了一个int类型并初始化为cnt,int *p = new int[cnt];这样才是声明一个数组.
至于你输出的错误结果,那是因为(*p++ )= (*iter);以后,P已经指向下一个地址,没有初始化,所以就是一个没有初始化的随机值,系统不同,这个值也不一样,window是一个大的整数,linux就可能是0.所以如果你想打印这个*p的值的话,分开来写久可以了.
*p = *iter;
cout << *p <<endl;
p++;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
php中if的简写语句,更简洁的三元运算符
今天我发现了PHP三元运算符的一个小小的用法. 这给我干涸的大脑一点乐趣! PHP 三元运算符是对参数赋值时候的一个简洁的主要用法. 一个主要的用法: PHP 三元运算符能够让你在一行代码中描述判定代码, 从而替换掉类似以下的代码: 1 2 3 <?phpif (isset($value)) {    $output = $va
python 中各种简单的代码写法
该篇博客主要记录python中各种简单的代码的写法,持续更新: 1.lambda: 它主要是简化函数的定义。在一般情况下我们定义一个函数通常是: def test(x): return x+1 而是用lambda可以简化为: test =lambda x:x+1 print(test(1)) print(test(2)) 输出结果: 2 3 2.rang
python if else的简写
如果是普通的三元,if else 正常的结构让人看到有一些冗余,下面有三种方法:a, b, c = 1, 2, 3#第一种    &quot;值1 if 条件 else 值2&quot;a, b, c =1, 2, 3c = a if a&amp;gt;b else bc2#第二种 如果 a&amp;gt;b为False,就拿列表第一个位置a,是Ture,就拿列表的第二位置b    列表第一个位置为list[0],第二个位置为lis...
简写的最大公约数写法(不能再忘了)
long long gcd(long long x, long long y) { return y ? gcd(y, x%y) : x; } y代表的是余数,如果余数不为0,那么就继续操作,将第一个数用第二个数代替,第二个数用余数代替,简化的辗转相除法罢了~~
最简洁条件判断写法
本文主要介绍了Python真假值(True or False)小技巧,以下是两种简洁写法: def isLen(strString): if len(strString)&amp;gt;6: return True else: return False 在Python3中有办法只用一行完成函数: &amp;gt;&amp;gt;&amp;gt;def isLen(st...
英文日期格式及缩写总结
日期格式: 英式日期格式:22nd,July,2009 或 22,july,2009 格式为:日,月,年 美式日期格式:july 22nd,2009 或 july 22,2009 格式为:月 日,年 中文日期格式:2009年7月22日 日,月,年是这样的格式 1st, Jan., 2009(要两个逗号了),或者 01-01-2009(01/01/2009) 月,日,年是这样的格式 J
Python-简洁高效写法
(1)列表解析式功能:生成符合条件的新列表arrayList=[[1,2,3],[4,5,6],[7,8,9]]arrayNew = [yy for yy in arrayList if yy[0]%2==1] #新列表为该行第一个数为偶数。print(arrayNew)(2)enumerate同时获取索引和元素值。def getitemstr(index, element):    return...
关于C/C++指针符号“*”的书写格式
指针是C/C++语言的精髓zhiyi
简单IF语句的简化写法->三目运算符
int a =0; int b=1; int c; c=((a > b)?a:b); System.out.println(c); 输出 1 括号内为表达式,其结果为true或false ?后面为返回值 为true表达式的结果为:前面的内容 为false表达式的结果为:后面的内容
es6 javascript对象属性的简洁表示法
ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。var foo = 'bar'; var baz = {foo}; baz // {foo: &quot;bar&quot;} // 等同于 var baz = {foo: foo}; 上面代码表明, ES6 允许在对象之中,只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。下面是另一个例子。function f(x, y) { ...