我有这样的结构:
struct Rz3DContourNode {
float x;
float y;
float z;
float nx;
float ny;
float nz;
};
Run Code Online (Sandbox Code Playgroud)
我将元素存储在STL向量中,如下所示:
std::vector < Rz3DContourNode > nodes;
Run Code Online (Sandbox Code Playgroud)
现在我想更改vector中节点的nx,ny compoent.我尝试如下:
*(&nodes[i].nx)=newNXValue;
*(&nodes[i].ny)=newNYValue;
*(&nodes[i].nz)=newNZValue;
Run Code Online (Sandbox Code Playgroud)
这不起作用.是因为nodes [i]返回对象的副本?
使用指针有什么解决方案吗?
我不能使用指针(Rz3DContourNode*),因为我在OpenGL中使用此向量作为
glNormalPointer(GL_FLOAT,sizeof(Rz3DContourNode), &nodes[0].nx);
Run Code Online (Sandbox Code Playgroud)
编辑 - 对不起.我实际上每次都保留一个QList并获取std :: vector.这就是原因
std::vector<Rz3DContourNode> nodeVector = nodes.toVector().toStdVector();
Run Code Online (Sandbox Code Playgroud) 有一个运算符重载,<<它解释char*为C风格的字符串.char*但是,如果指向单个字符,如何将其输出到流中?
我正在尝试创建一个程序,显示条形图,*最大数量*可以是40.我有一切正常,但对代码有疑问.是否有更好的方法,因为你可以看到我必须使用以下两次回到原始地址:
p_bar_length = p_bar_length - size;
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
#include <iostream>
using namespace std;
const int MAX_SPLATS = 40;
void bar_chart(double values[], int size)
{
double largest = values[0]; //assign first element to be the largest
//Find the largest value
for (int i = 1; i < size; i++)
{
if (largest < values[i]) // check to see if there is something larger
{
largest = values[i];
}
}
// Find the number of spalts to use
// with the precent based …Run Code Online (Sandbox Code Playgroud) 很抱歉用C语言搞乱你们.write()采用void*buff.我需要通过提供所需的数据从main()调用此函数.
但是当我打印它时会抛出错误.帮帮我朋友.代码如下.
void write(int fd, void *buff,int no_of_pages)
{
// some code that writes buff into a file using system calls
}
Run Code Online (Sandbox Code Playgroud)
现在我需要发送buff我需要的数据.
#include "stdio.h"
#include "malloc.h"
int main()
{
int *x=(int*)malloc(1024);
*(x+2)=3192;
*(x+3)="sindhu";
printf("\n%d %s",*(x+2),*(x+3));
write(2,x,10); //(10=4bytes for int + 6 bytes for char "sindhu");
}
Run Code Online (Sandbox Code Playgroud)
它警告我
warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int’
Run Code Online (Sandbox Code Playgroud)
我该如何删除此警告
我是一名编程学生,我不明白这段代码有什么问题:
#include <stdio.h>
#include <stdlib.h>
void merge(int a[], int low, int high, int mid){
int i, j, k, c[50];
i=low;
j=mid+1;
k=low;
while((i<=mid)&&(j<=high)){
if(a[i]<a[j]){
c[k]=a[i];
k++;
i++;
} //end if
else{
c[k]=a[j];
k++;
j++;
} //end else
} //end while
while(i<=mid){
c[k]=a[i];
k++;
i++;
} //end while
while(j<=high){
c[k]=a[j];
k++;
j++;
} //end while
for(i=low;i<k;i++){
a[i]=c[i];
} //end for
} //end merge()
int mergesort(int a[], int low, int high){
int mid;
if(low<high){
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,high,mid);
} //end if
return(0); …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
//MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QTextEdit *textEdit;
};
#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)
// MainWindow.cpp
#include "mainwindow.h"
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
{
textEdit = new QTextEdit();
}
MainWindow::~MainWindow()
{
delete textEdit;
}
Run Code Online (Sandbox Code Playgroud)
//main.cpp
#include <QtGui>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
在线上*binSon[0].add(x);,它给我一个错误,一个表达式必须有一个类类型,我该怎么办?
struct Rectangle
{
tName Name; //name of the rectangle
struct Rectangle *binSon[NDIR_1D]; //left and right son
int Center[NDIR_1D];
int Length[NDIR_1D];
void add(Rectangle x){
if(strcmp(x.Name,Name)<0)
{
if(binSon[0]==NULL)
binSon[0]=&x;
else
*binSon[0].add(x);
}else{
if(binSon[1]==NULL)
binSon[1]=&x;
else
*binSon[1].add(x);
}
}
};
Run Code Online (Sandbox Code Playgroud) 我有一个难以理解的代码片段.
char *c; // c is uni dimensional table ( single row )
char **p ; // p is a two dimensional table
**p = *c; // what does this mean ?
Run Code Online (Sandbox Code Playgroud)
当我执行上面的赋值时,是否将c复制为p的第一行?
或者c被复制为p的第一列?
我目前正在尝试C,我很难理解如何在函数中使用指针.我理解当我初始化指针然后取消引用它时发生了什么,但是,当我必须在函数中使用它们时,我有点困惑,如下所示:
我这里有三个功能,但我不确切知道何时使用哪个功能.我还是比较新的C.
int returnSomething(int a, int b)
int returnSomething(int *ptrA, int *ptrB)
int* returnSomething(int *ptrA, int *ptrB);
Run Code Online (Sandbox Code Playgroud)
编辑:
三者之间有很大的不同吗?
我有一个代码,我使用指向我所做的类的指针.举个例子,假设我有一个Person方法,每个Person都有一个名字.现在让我说我用一个像指针这样的人
Person& * person_;
Run Code Online (Sandbox Code Playgroud)
现在让我说我正在尝试使用我拥有的指针获取该人的名字.如果我做一些简单的事情
person_.getName()
Run Code Online (Sandbox Code Playgroud)
它将返回一个错误,说它是非类型的.
我的问题是:如果我只有指针可以使用,我该如何使用它所指向的类的方法?