我有这个示例代码:
#include <stdio.h>
#include <stdlib.h>
int addOne();
int main(int argc, char** argv) {
char s[100];
int x = 1;
x = addOne(x);
printf("%d",x);
gets(s);
return (EXIT_SUCCESS);
}
int addOne(int j) {
return j + 1;
}
Run Code Online (Sandbox Code Playgroud)
您可以看到printf在获取之前,但是当我运行代码时,它会在打印数字后首先询问字符串.我正在使用NetBeans和Cygwin gcc编译器.有什么我想念的吗?这是编译器错误吗?
我想使用perl DBI(版本5.16.3)的预准备语句来更新Oracle数据库表中的行.
my $query = 'update THE_TABLE set (COLUMN_ONE = ?, COLUMN_TWO = ?,
MODIFY_DATE = SYSDATE) where ID = ?';
my $statement_update = $db_handle->prepare($query) or die 'DB Error: ' . $db_handle->errstr;
$statement_update->execute(1, 1, '123456789') or die 'DB Error: ' . $statement_update->errstr;
Run Code Online (Sandbox Code Playgroud)
执行时,perl DBI在语句中添加一个特殊的<*>符号组,这会导致错误:
DBD::Oracle::st execute failed: ORA-00907: missing right parenthesis (DBD ERROR: error possibly near <*> indicator at char 31 in 'update THE_TABLE set (COLUMN_ONE <*>= :p1, COLUMN_TWO = :p2, MODIFY_DATE = SYSDATE) where ID = :p3') [for Statement …
这是我自己的Point类(Point.h):
class Point {
public:
Point(double x, double y, double z);
Point(const Point& orig);
virtual ~Point();
double getX();
double getY();
double getZ();
void writeOut();
private:
double x, y, z;
};
Run Code Online (Sandbox Code Playgroud)
在这里,我创建一个点并将其添加到vector<Point>(main.cpp):
Point* p = new Point(0.1,0.2,0.3);
vector<Point>* points = new vector<Point>;
points->push_back(*p);
//doing stuff
delete points;
Run Code Online (Sandbox Code Playgroud)
我的问题是:矢量制作Point的副本并存储它(所以我也需要delete p;),或者它是否存储之前创建的一个实例?
更新:
我在这里读到push_back"在向量的末尾添加一个新元素,在其当前的最后一个元素之后.val的内容被复制(或移动)到新元素." 但是哪一个?复制还是移动?它是如何确定的?
我用秒表测量程序的运行时间(用C#编写).我的电脑睡了,我不知道它显示的时间数据是否正确.那么也是在Stopwatch测量睡眠时间,还是暂停了然后继续?