标签: pointers

指向STL容器元素的指针

给定一个非连续的STL容器(您也可以考虑boost::unordered_mapboost::multi_index_container考虑),如果没有删除任何元素,是否保证容器内元素的内存地址永远不会改变(但是可以添加新的容器)?

例如

class ABC { };
//
//...
//
std::list<ABC> abclist;
ABC abc;
abclist.insert(abc);
ABC * abc_ptr = &(*abclist.begin());
Run Code Online (Sandbox Code Playgroud)

在其他的字将abc_ptr被指出abc在整个执行,如果我不删除abcabc_list.

我问这个是因为我要用ABCC++/Cli ABC包装类,所以我需要指向包装类中的实例的指针.ABC是一个简单的类,我希望容器处理内存.如果答案是否定的话我将使用std::list<ABC*>.

c++ pointers stl memory-address

20
推荐指数
3
解决办法
8490
查看次数

显示字符串的地址

我有这个代码:

char* hello = "Hello World";
std::cout << "Pointer value = " << hello << std::endl;
std::cout << "Pointer address = " << &hello << std::endl;
Run Code Online (Sandbox Code Playgroud)

这是结果:

Pointer value = Hello World
Pointer address = 0012FF74
Run Code Online (Sandbox Code Playgroud)

当我使用OllyDbg调试我的程序时,我看到0x0012FF74的值是例如0x00412374.

有什么方法可以打印hello指向的实际地址吗?

c++ pointers

20
推荐指数
2
解决办法
3万
查看次数

将结构指针传递给c中的函数

我将指向结构的指针传递给函数时遇到了问题.我的代码基本上如下所示.在main函数中调用modify_item后,stuff == NULL.我想要东西是一个指向项目结构的指针,元素等于5.我做错了什么?

void modify_item(struct item *s){
   struct item *retVal = malloc(sizeof(struct item));
   retVal->element = 5;
   s = retVal;
}

int main(){
   struct item *stuff = NULL;
   modify_item(stuff); //After this call, stuff == NULL, why?
}
Run Code Online (Sandbox Code Playgroud)

c struct pointers

20
推荐指数
2
解决办法
5万
查看次数

指针上的golang指针作为函数参数

我有以下功能:

func addCatsToMap(m map[string][]CatHouse, meowId int, treats Set, dog *Dog) {

//if (complicated thing) add Cat to m

}
Run Code Online (Sandbox Code Playgroud)

其中Set,type的类型treats是具有以下定义的接口:

type Set interface {
  Add(value string)
  Contains(value string) (bool)
  Length() (int)
  RemoveDuplicates()
}
Run Code Online (Sandbox Code Playgroud)

题:

这是真的m,treatsdog通过按引用,并且meowId有它的价值被复制?

我认为:

  • m 是传递参考,因为它是一张地图
  • dog是一个结构.所以,我应该传递指针以避免复制数据

pointers go

20
推荐指数
2
解决办法
2万
查看次数

%p说明符仅用于有效指针吗?

假设在我的平台上sizeof(int)==sizeof(void*),我有这个代码:

printf( "%p", rand() );
Run Code Online (Sandbox Code Playgroud)

这是不确定的行为,因为传递一个不是有效指针的值代替%p

c++ pointers reinterpret-cast

20
推荐指数
3
解决办法
855
查看次数

如何在C#中存储函数指针

假设我想在a中存储一组函数指针List<(*func)>,然后稍后调用它们,甚至可能使用参数...就像我存储在a中一样,我Dict<(*func), object[] params>可以用参数调用func吗?我该怎么做?

.net c# pointers function

19
推荐指数
3
解决办法
2万
查看次数

容器中的智能指针如std :: vector?

我正在学习有关智能指针(std::auto_ptr),只是看这里这里是智能指针(std::auto_ptr)不应该在容器(即放std::vector),因为即使大多数编译器不会抱怨,这似乎是正确的.没有规则说智能指针不会在内部复制(vector例如按类)并传输其所有权,然后指针将变为NULL.最后,一切都会搞砸.

实际上,这种情况多久发生一次?

有时我有指针的向量,如果在将来我决定我想要一个智能指针的矢量我会选择什么?

我知道C++ 0x和Boost库,但是现在,我更倾向于坚持使用STL方法.

c++ pointers smart-pointers std auto-ptr

19
推荐指数
2
解决办法
2万
查看次数

19
推荐指数
2
解决办法
4969
查看次数

带派生类的std :: unique_ptr

我有一个关于c ++ 11指针的问题.具体来说,如何将基类的唯一指针转换为派生类?

class Base
{
public:
   int foo;
}

class Derived : public Base
{
public:
   int bar;
}

...

std::unique_ptr<Base> basePointer(new Derived);
// now, how do I access the bar member?
Run Code Online (Sandbox Code Playgroud)

它应该是可能的,但我无法弄清楚如何.每次我尝试使用

basePointer.get()
Run Code Online (Sandbox Code Playgroud)

我最终得到了可执行文件崩溃.

在此先感谢,任何建议将不胜感激.

c++ pointers c++11

19
推荐指数
1
解决办法
2万
查看次数

重载函数以获取指针或引用是不好的做法吗?

例如,如果我有一个结构FooSpec:

struct FooSpec { /* lots of data */ };
Run Code Online (Sandbox Code Playgroud)

将以下两个都作为重载函数提供是不好的做法吗?或者我应该选择一个并坚持下去?

Foo *createFoo(const FooSpec *spec) { /* ... */ }
Foo *createFoo(const FooSpec &spec) { return createFoo(&spec); }
Run Code Online (Sandbox Code Playgroud)

两者都会导致意想不到的问题?

c++ pointers overloading reference

19
推荐指数
2
解决办法
1714
查看次数