指针的使用(3) 有如下变量定义: double a; double *p, *q; 假设 p 指向 a,则使 q 指向 a 的正确语句是 ▁▁▁▁▁ 。 A. *&q = &a; B. *q = *p; C. &q = &p; D. q = &*p;
时间: 2024-05-28 22:11:30 浏览: 197
正确答案是 D. q = &*p;
解析:
&p 是指向指针 p 的指针,类型为 double **,与 q 的类型 double * 不匹配。
*q = *p 将 p 指向的值赋给 q,但是 p 指向的是变量 a,而 q 并没有指向任何变量。
*&q = &a 将变量 a 的地址赋值给指向指针 q 的指针,但是 *&q 等价于 q,左右两边类型不匹配。
q = &*p 将 p 指向的变量 a 的地址赋给指针 q,此时 q 和 p 指向同一个变量 a,且类型匹配。
相关问题
编写函数,拆分出一个实数的整数与小数部分。 函数接口定义: void splitreal ( double x, int *intpart, double *fracpart );
好的,以下是函数的实现代码:
```c
void splitreal(double x, int *intpart, double *fracpart) {
*intpart = (int)x; // 取整数部分,强制类型转换
*fracpart = x - *intpart; // 取小数部分
}
```
函数使用了指针参数来返回整数部分和小数部分。调用时需要传入一个 double 类型的实数 x,以及指向整数部分和小数部分的指针。函数会将整数部分和小数部分分别存入指针所指向的变量中。
例如,假设要拆分实数 3.14159,可以这样调用函数:
```c
int intpart;
double fracpart;
splitreal(3.14159, &intpart, &fracpart);
printf("整数部分:%d,小数部分:%f\n", intpart, fracpart);
```
输出结果为:
```
整数部分:3,小数部分:0.141590
```
希望能够帮到你!
void Widget::on_open_video_btn_clicked() { cam->open(0);//打开摄像头,从摄像头中获取视频 timer->start(30); //每30ms更新一次画面 QString fileName = QFileDialog::getSaveFileName(this, tr("Save Video"), ".", tr("Video Files (*.avi)")); if (!fileName.isEmpty()) { int codec = cv::VideoWriter::fourcc('M', 'J', 'P', 'G');//设置视频编码格式 double fps = 30;//设置视频帧率 cv::VideoWriter writer(fileName.toStdString(), codec, fps, frame->size(), true);//创建VideoWriter对象 if (writer.isOpened()) { timer->stop();//停止更新画面 cam->release();//释放摄像头 while (true) //写入视频帧 { (*cam) >> (*frame);//继续读取下一帧 if(frame->empty()) { break;//如果没有帧,则退出循环 } cv::cvtColor(*frame,frame,cv::COLOR_BGR2RGB);//转化为Qt的RGB格式 QByteArray imageData((const char)frame->data, frame->cols * frame->rows * frame->elemSize()); imag->loadFromData(imageData, frame->cols, frame->rows, QImage::Format_RGB888); ui->captrue_lab->setPixmap(QPixmap::fromImage(*imag));//将图片显示到label上 qApp->processEvents();//处理UI事件 writer.write(*frame); } } } }这段代码中imag->loadFromData(imageData, frame->cols, frame->rows, QImage::Format_RGB888);这条语句存在语法错误
这段代码中没有明确定义 `imag` 变量,应该是一个指向 `QImage` 对象的指针或引用。假设 `imag` 是一个指向 `QImage` 对象的指针,你需要先创建一个 `QImage` 对象,然后将该对象的地址赋值给 `imag` 指针。例如:
```
QImage *imag = new QImage();
imag->loadFromData(imageData, frame->cols, frame->rows, QImage::Format_RGB888);
```
另外,记得在适当的时候释放 `imag` 对象,以避免内存泄漏。
阅读全文