标签: pointers

iPhone:你能告诉我b/t的差异(NSObject*)obj&(NSObject*obj)

你能告诉我-(NSObject *)obj和之间有什么区别 -(NSObject *obj)吗?

iphone pointers objective-c

0
推荐指数
1
解决办法
161
查看次数

此函数是否返回与其参数相同的指针?

我在C中编写了这个函数:

void *PWNRetain(void *object) {
  PWNObject *obj = (PWNObject *)object; // <-- looks stupid, I know :)
  obj->retainCount++;
  return obj;
}
Run Code Online (Sandbox Code Playgroud)

重要的是,它将返回与其参数相同的指针.是obj等于object,还是我做了另一个指针错误?谢谢.:)

c struct pointers

0
推荐指数
1
解决办法
102
查看次数

理解指针c ++

当我写这段代码时:

Animal *p;
Animal b;
p = &b;
Run Code Online (Sandbox Code Playgroud)

在我创建指针的第一行.是创建Animal的新对象还是仅在编写第二行时?

谢谢.

c++ pointers

0
推荐指数
2
解决办法
299
查看次数

在其他范围内为指针创建实例

我有两种方法来为指针创建实例.但其中一个会失败.

class A {
public:
    int num;
};

void testPointer1(A* a){
    a = new A();
    a->num = 10;
}
A* testPointer2(){
    A* a = new A();
    a->num = 10;
    return a;
}
void testPointer() {
    A* a1 = NULL;
    testPointer1(a1); // this one fails
    //cout << a1->num << endl; // segmentation fault

    A* a2 = NULL;
    a2 = testPointer2();
    cout << a2->num << endl;
}
Run Code Online (Sandbox Code Playgroud)

为什么testPointer1错了?

c++ pointers

0
推荐指数
1
解决办法
211
查看次数

从本地指针复制数据以获取返回值

对于使用C++工作的装配专家来说,这是一个理论问题.我经常想要从函数中的局部变量返回一个字符串(char*或wchar*).如您所知,由于局部变量失去了范围,因此无法完成此操作.这让我很好奇,是否可以从函数中推送存储在此位置的数据?

让我说明一下:

char *IllegalFunc()
{
    char *ret = "Hello World";
    return ret; //warning: returning the adress of a local variable
}

//what we are attempting
char *IllegalAndMostlyIllogicalFunc()
{
    char *ret = "Hello World";
    __asm {
        //somehow copy *ret to ESP and return 
    }
}

char *ARightWayToDoIt()
{
    char *ret = new char[12];    
    strcpy(ret, "Hello World");
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

这只是为了好奇,我不会实际使用__asm方法...我可能只是声明一个静态char*所以我可以在c#中导入这样的函数

[dllimport(...)]
string IllegalFunc();

[dllimport(...)]
string ARightWayToDoIt(); //memory leak, I would need a FreeLastString() method
Run Code Online (Sandbox Code Playgroud)

c++ string assembly pointers

0
推荐指数
1
解决办法
548
查看次数

关于*的简单C问题

我想知道这两行代码有什么区别?

int hi;
int *hi;
Run Code Online (Sandbox Code Playgroud)

在C编程语言中?

谢谢!阿米特

c variables pointers

0
推荐指数
1
解决办法
177
查看次数

指向矢量

#include <iostream>
#include <vector>

using namespace std;

int main () 
{
    vector <int> qwerty;
    qwerty.push_back(5);

    vector <int>* p = &qwerty;

    cout << p[0];  //error: no match for 'operator<<' in 'std::cout << * p'

}
Run Code Online (Sandbox Code Playgroud)

我一般都不清楚如何使用带向量的指针,所以我很难解释为什么这不起作用.在我看来,这应该打印5屏幕.

c++ pointers vector

0
推荐指数
1
解决办法
170
查看次数

矢量调整大小是如何实现的?

我试图找出一个向量在已经"创建"一些之后如何添加更多对象,我的意思是:

int *ptr;
ptr = new int;
Run Code Online (Sandbox Code Playgroud)

如何使用它,你可以为该指针添加更多的对象吗?(把它变成一个数组)
谢谢!

c++ pointers add new-operator

0
推荐指数
1
解决办法
2797
查看次数

在C中,传递给函数的char*如何填充文本?

我正在尝试创建一个将返回int的C函数,但在此过程中将填充作为变量传入的char*.我正在尝试的一个基本示例是:

int myMethod(int input, char* output, int outMaxLen) {
    int outValue = input * 5;
    if (out < 10) strcat(output, "A small number");
    else if (out < 20) strcat(output, "A medium number");
    else strcat(output, "A large number");
}
Run Code Online (Sandbox Code Playgroud)

在main.c中:

char* myMethodOutput;
int myMethodInt = myMethod(2, myMethodOutput, 15);
printf("%d %s", myMethodInt, myMethodOutput);
Run Code Online (Sandbox Code Playgroud)

运行时,整数显示在屏幕上,但文本不显示.

outMaxLen变量用于检查char*参数以确保它足够大以容纳输出字符串.

和strcat()一样,我尝试过strcpy()和strncpy(),但都无济于事.strcat()不向控制台显示任何文本,strcpy()和strncpy()使用消息EXC_BAD_ACCESS调用调试器.

我已经使用strcpy_s函数在Windows API中成功地管理了这个,但我现在正在尝试UNIX框.我可能错过了一些非常基本的东西!

c pointers c-strings

0
推荐指数
1
解决办法
288
查看次数

矢量析构函数导致程序在C++中崩溃

我有一个vector<vector<Person*>*>*被调用的组(是的,我知道shared_ptr,但我不能在这个上下文中使用它们),另一个叫做partialGroups

无论如何,在方法结束时,我删除了所有内部向量,但不删除了人本身,因为我仍然希望它们有效,所以这里是代码的结尾:

// Deal with remaining partial teams
vector<Person*> *unsortable;
groups->push_back(unsortable);
// Remaining people
for(unsigned int i = 0; i < people.size(); i++) {
    unsortable->push_back(people[i]);
}
// Remaining partial groups
for(unsigned int i = 0; i < partialGroups.size();i++) {
    for(unsigned int j = 0; j < partialGroups[i]->size(); j++) {
        unsortable->push_back(partialGroups[i]->at(j));
    }
    delete partialGroups[i];
}

return groups;
Run Code Online (Sandbox Code Playgroud)

然后我用这行代码调用该方法:

vector<vector<Person*>*> *currentMatch = sort(*people);
Run Code Online (Sandbox Code Playgroud)

我可以一直运行gdb到返回组; 声明,并查看数据结构,这很好.但是,当我退出该方法时,程序崩溃,堆栈跟踪显示它在向量析构函数本身中崩溃.

到底是什么导致了这个?它不应该是Person析构函数的问题,因为内部向量是指向人的指针.另外,取出删除行并没有什么区别.(是的,我知道它会留下内存泄漏,但它可能有助于诊断问题).

谢谢.

编辑:此外,错误是一个sigabrt

c++ pointers destructor vector

0
推荐指数
1
解决办法
1440
查看次数