我想有一个向量z,并能够访问它z[i]或*pz[i],其中*pz[i]指出z[i].所以有一组值,但有两种方法可以访问它.
这是我的代码:
std::vector<double> z;
std::vector<double*> pz;
for (int i = 0; i < 5; i++) {
z.push_back(7+0.01*i);
std::cout << i << " z = " << z << std::endl;
pz.push_back(&z.back());
std::cout << i << " pz = " << pz << std::endl;
std::cout << i << " *pz = " ;
for (int j = 0; j < pz.size(); j++) {
std::cout << " " << *pz[j];
}
std::cout << std::endl;
} …Run Code Online (Sandbox Code Playgroud) 几天前我踩了下面的代码,我不知道它到底做了什么.
int (*func) ();
func = (int (*) () ) some_array_here;
(int) (*func) ();
Run Code Online (Sandbox Code Playgroud)
第一行看起来像一个整数指针,但()s错误我.第二行看起来像演员和第三行,我真的不知道.你们能帮忙吗?谢谢
我在几个树代码中看到,树类的一个函数同时具有*和&与节点,例如在BST中插入一个节点,函数是这样的
insertnode(node * &t,string value)
{
t = new node; t-> val = value
// code to find right place in BST
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我们通常引用指针,特别是这种情况.还请提及是否还有其他任何情况,谢谢
而不是发布另一个问题.有人也可以指出对象类的使用吗?我的意思是使用对象类的实例它是否分配了所有子类的所有内存?即int float等.
我将结构的内存位置存储为整数.如何检索存储在该位置的结构并在该位置创建指向该对象的指针?
Structure object;
int memLocation = &object;
Structure objectCopy = (objectAtLocation) memLocation;
Structure *objectPointer = (pointerToLocation) memLocation;
Run Code Online (Sandbox Code Playgroud) 什么是在C++中执行指针运算最干净的方法?我正在尝试将n字节添加到地址.
int *foo;
foo = static_cast<int*> (static_cast<unsigned int>(foo) + sizeof(T))
Run Code Online (Sandbox Code Playgroud)
之后你可以重铸并以不同的方式使用foo
char* somestr = reinterpret_cast<char*>(foo)
Run Code Online (Sandbox Code Playgroud)
这够好吗?现在我理解指针实现dosent保证所有指针(char*,int*)都实现相同的大小.所以不确定是否int*(应该是foo*)并且使用unsigned int进行数学运算是最干净的解决方案.此外,它必须兼容32位和64位.
没关系为什么我这样做.虽然不是那么不寻常.当您使用动态解释为不同类型的数据流(或字节池)时,您将遇到此问题.
我是C的新手,对初始化结构有疑问.我正在使用一个我没有创建的结构,所以我不知道它里面是什么.因此,我没有初始化它,但编译器抱怨.所以我把它设置为NULL但是我遇到了分段错误.然后我查找了如何将所有内容设置为0并且它说将其设置为等于{0}.这也给了我一个分段错误.因为我知道我调用的函数是正确的,并且我传递的数组的大小正确,我几乎可以肯定它与我初始化结构的方式有关.初始化是
struct aes_ctx *aes_struct = {0}
Run Code Online (Sandbox Code Playgroud)
该函数的标题是
void aes_setkey(aes_ctx *aes, const void *key, u_int len);
Run Code Online (Sandbox Code Playgroud)
我称之为的方式是
aes_setkey(aes_struct, aes, CCA_STRENGTH);
Run Code Online (Sandbox Code Playgroud)
其中aes是大小为16的缓冲区,CCA_STRENGTH是16的常量int.
总结一下这个问题,我认为我初始化结构的方式导致它在以后无法使用.任何可以给我的帮助将非常感激!谢谢!
malla = new Celula**[n + 2];
for(int i = 0 ; i < n + 2 ; ++i){
malla[i] = new Celula*[m + 2];
for(int j = 0 ; j < m + 2 ; ++j){
malla[i][j] = new Celula[m];
}
}
Run Code Online (Sandbox Code Playgroud)
我正在制作这段代码并且我像这样分配内存(我想要一个n*m指向Celula的指针数组,好吗?现在我需要一个析构函数.
现在我不知道如何访问此数组中的对象,并且:
malla[i][j].setestado(true);
Run Code Online (Sandbox Code Playgroud)
不起作用.
我想基本上做以下(这可能是危险的,不是什么)只是为了它:
int main() {
int x = 0x00ff00ff;
printf("Value at addr x: %x\n",*x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
基本上看一下我机器中某个地址的内容.也许写信给它.我猜我不允许做后者.
我得到的错误是error: invalid type argument of 'unary *'.
有没有办法做到这一点?
对于这个奇怪的标题感到抱歉,如果你能想到一个,请随时提出更好的标题.
这是我的问题.
我有一个看起来像这样的结构:
QObject - > MyBase - > MyDerived
然后我有一个函数将任何派生类型作为QPointer;
void function(QPointer<MyBase> base) {
...
}
Run Code Online (Sandbox Code Playgroud)
问题是现在我无法QPointer<MyDerived>进入这个函数,如果我使用标准指针,我会这样做.我是否必须转换此对象以使其适合该功能?或者我应该只使用普通指针?
此外,当您分配失败的对象时,是否有人知道标准行为?你是否应该总是在try-block中执行此操作或将其包装在某个内容中以检查它是否为null?我阅读了Qt文档,他们说如果分配失败,他们的大多数类都会返回一个空值.该语句何时为true,如果我不想使用try-catch,我该怎么办?
我正在尝试使用MPI编写一个程序,我有一个问题可以帮助我很多.在MPI中是否可以以任何方式向另一个进程发送指针?我想要的只是发送指针,而不是将内存从一个进程复制到另一个进程.
如果不适用,可以将指针表示为字符串,然后发送它,以便接收进程可以再次将其转换为指针并访问指向的内存?
提前致谢.