我不想实现以下代码 - 检查指针是否为null或不为null.如果指针指向对象,则对该对象执行操作,否则 - 跳过该代码块.
我的代码:
ref class EchoClient {
private:
GameMatrix^ gameMatrix;
public:
EchoClient(void);
EchoClient(GameMatrix^);
void do();
};
EchoClient::EchoClient(void)
{
this->gameMatrix = NULL;
}
EchoClient::EchoClient(gameMatrix)
{
this->gameMatrix = gameMatrix;
}
void EchoClient::do() {
if(this->gameMatrix != NULL)
{
this->gameMatrix->redrawMatrix();
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
error C2446: '!=' : no conversion from 'int' to 'GameMatrix ^' k:\visual studio 2010\Projects\EchoClient3WS\EchoClient3WS\EchoClient.cpp 106
Run Code Online (Sandbox Code Playgroud)
任何解决方案
当使用GDB单步执行程序时,如何检查指针指向的字符串?
我可以看到指针指向0x82c6e10.我知道这是一个字符串.我该如何打印?
使用printf("%s\n", 0x82c6e10)给出Bad format string, missing '"'.gdb不抱怨未知命令的事实告诉我解决方案是我正在做的事情的一些变化.我对吗?我试图逃避报价,但这没有帮助.
我使用以下模板获取指向数组的最后一个元素后面的指针:
template <typename T, size_t n>
T* end_of(T (&array)[n])
{
return array + n;
}
Run Code Online (Sandbox Code Playgroud)
现在我似乎记得这种方法存在一些问题,但我不记得它是什么.我相信它与类型参数或函数参数的选择有关,但我不确定.所以就像进行健全性检查一样,您是否看到上述代码存在任何问题?小用量测试:
int test[] = {11, 19, 5, 17, 7, 3, 13, 2};
std::sort(test, end_of(test));
Run Code Online (Sandbox Code Playgroud) 例如:
int x[100];
void *p;
x[0] = 0x12345678;
x[1] = 0xfacecafe;
x[3] = 0xdeadbeef;
p = x;
((int *) p) ++ ;
printf("The value = 0x%08x", *(int*)p);
Run Code Online (Sandbox Code Playgroud)
编译上面的代码会在++运算符的行上生成一个左值所需的错误.
如何初始化指向文字数组的指针?
我希望*grid指向新分配的int数组{1,2,3}.
int *grid = new int[3];
*grid = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
谢谢.
我的问题是关于C free()函数,用于释放先前使用malloc()分配的内存块.
如果我有一个结构数据类型由几个指针组成,每个指针指向不同的内存位置,如果我在结构上应用free()会对这些内存位置会发生什么?这些地点也会免费吗?或只是分配指针的内存块?
我正在尝试这个简单的ctypes示例并获得提到的错误
>>> from ctypes import create_string_buffer
>>> str = create_string_buffer("hello")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python32\lib\ctypes\__init__.py", line 59, in create_string_buffer
buf.value = init
TypeError: str/bytes expected instead of str instance
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?
在同一个注释中,我试图从我的python代码将指向字符串的指针传递给C函数,以便我可以在那里执行一些字符串操作并返回另一个字符串.有人可以给我一些关于如何做到这一点的示例代码吗?
extern "C" __declspec(dllexport) char * echo(char* c)
{
// do stuff
return c;
}
Run Code Online (Sandbox Code Playgroud) 我对指针和它们占用的字节有点困惑.在我的教科书中,它首先说明16位系统上的指针占用2个字节,32位系统占用4个字节,64位系统占用8个字节,依此类推.然后是10行,它表示指针占用了许多字节,这是保存地址所需的.这是我的问题:
可以在go lang中将指针传递到通道上吗?我需要传递struct,对其进行更改并在struct传递的相同函数中进行更改?
我试过了
chan <- &data
Run Code Online (Sandbox Code Playgroud)
我得到了
# command-line-arguments .\o.go:130: cannot use &duom[i] (type *KaVartoti) as type KaVartoti in send
Run Code Online (Sandbox Code Playgroud)
在此之后我尝试了
chan <- *data
Run Code Online (Sandbox Code Playgroud)
我得到了
# command-line-arguments .\o.go:130: invalid indirect of duom[i] (type KaVartoti)
Run Code Online (Sandbox Code Playgroud)
那么,可以通过Go中的通道发送指针吗?
根据C++标准,每个实现都必须记录"实现定义的行为":
1.3.11
[defns.impl.defined]实现定义的行为行为,对于格式良好的程序构造和正确的数据,这取决于实现和每个实现文档
读取无效指针值具有实现定义的行为(请参阅4.1左值到右值转换[conv.lval]):
如果glvalue引用的对象包含无效指针值(3.7.4.2,3.7.4.3),则行为是实现定义的.
(引自n4527草案,但是"通过无效指针值间接并将无效指针值传递给释放函数的行为具有未定义的行为.无效指针值的任何其他使用都具有实现定义的行为."已经在3.7中. 4.2 [basic.stc.dynamic.deallocation]自至少草案n3485以来的释放功能
但是,许多流行的实现并未定义此行为,许多专家将此描述为"未定义的行为".
遗漏明确文件的一个可能原因是,据我所知,"附录后的标准草案"中出现的"实施定义行为指数"中缺少对"无效指针值"的评估.
这是标准中的缺陷吗?自C++ 14以来,是否有任何公开的缺陷报告或委员会行动?