标签: pointers

如何在C中使用一元指针运算符(*)?

我正在读一本名为Java和C的书:关键差异,为Java开发人员学习Objective-C.(我的背景是C#/ Java所以指针和管理内存的概念对我来说是新的,所以请耐心等待)

在第2章中,它解释了这个例子的指针:

int i = 1;
int *iptr;
iptr = &i;
*iptr = 2;
Run Code Online (Sandbox Code Playgroud)

我理解上面,其中*iptr是一个指针,它分配了内存位置i,也是从指针iptr我们可以访问的值iptr指向的*iptr语法.

在本书的下方还有以下片段:

//..    
NSMutableString *z = [[[NSNutableString alloc]init] autorelease];
[z appendString:@"Zombie "];
//...
Run Code Online (Sandbox Code Playgroud)

根据我对第2章的理解,该行[z appendString:@"Zombie "]应该是[*z appendString:@"Zombie "],因为我们希望实际的NSMutableString,而不是它的指针,被发送消息appendString!我知道我错了,有些东西我错过了,请指出正确的方向.

非常感谢,

朱塞佩

c pointers objective-c

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

C++函数指针

在C++中有没有办法制作一个"untyed"函数指针?例如:

// pointer to global function
void foo( void (*fptr)() );

// pointer to member
void foo( void (Bar::*fptr)() );
Run Code Online (Sandbox Code Playgroud)

有没有办法可以删除该成员所在的班级?所以我可以这样做:

void foo( void ("any type"::*fptr)(), "same type as for the pointer" &instance );
Run Code Online (Sandbox Code Playgroud)

然后,在foo中,我想将该指针存储在一个列表中,这样我就可以在列表上进行迭代并调用指向的函数/成员,而不管它属于哪个类.当然,我需要一个可以调用该函数的实例列表.

谢谢.

c++ pointers function-pointers

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

将指针的2D数组传递给函数C.

我有一个2D数组指针

main.c

Int32 * pRxSeqAddr[2][2];

func(pRxSeqAddr);
Run Code Online (Sandbox Code Playgroud)

/

func.c

void func( Int32** pRxSeqAddrPtr)
{

///
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

argument of type "Int32 *(*)[2]" is incompatible with parameter of type "Int32 **
Run Code Online (Sandbox Code Playgroud)

我知道如果它是指针的一维数组,那么这个函数调用很好,但2D唠叨我...

请帮忙

c arrays pointers 2d function

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

解除对象的指针数组?

考虑以下情况:

Class** array = new Class*[8];
array[1] = new Class(1,2);
Run Code Online (Sandbox Code Playgroud)

只是做" delete[ ] array足够"或者我应该在前者之前加上" delete array[1]".我对内存管理并不完全满意.

c++ pointers memory-management

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

memcpy()将整数值复制到char缓冲区

我试图将int的内存值复制到char缓冲区.代码如下所示,

#define CPYINT(a, b) memcpy(a, &b, 4)
............

char str1[4];
int i = 1;
CPYINT(str1, i);
printf("%s",s);

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

当我打印str1时,它是空白的.请澄清.

c memory pointers memcpy

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

我怎样才能处理一系列结构?

我有这个结构:

#define sbuffer 128
#define xbuffer 1024

typedef struct{
    char name[sbuffer];
    char att[sbuffer];
    char type[sbuffer];
    int noOfVal;
    int ints[xbuffer];
    double doubles[xbuffer];
    char *strings[xbuffer];
} variable;
Run Code Online (Sandbox Code Playgroud)

我需要从这个结构创建一个数组,我这样做了

variable *vars[512]; //is it right
Run Code Online (Sandbox Code Playgroud)

如果我想把我在s中的字符串放入名称中,我就这样做了:

char *s = "What Ever";
strcpy(vars[0]->name,s);
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用,任何人都可以帮忙吗?

c arrays struct pointers

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

在循环中创建新的指针对象

说我做这样的事情

for(int i = 0; i < 10; i++)
{
    //create a pointer object using new
    //use the object
}
Run Code Online (Sandbox Code Playgroud)

在循环中使用它之后是否需要删除指针对象?我当时想,如果我没有删除它,它将继续创建一个新对象10次,然后对象就会挂在那里,吃掉资源.

c++ pointers new-operator delete-operator

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

newbie objective c指针问题"*"语法

我经常收到有关将错误的指针类型传递给函数的警告,我只想一劳永逸地理解这一点.

这两者有什么区别?

CFURLRef *ref=(CFURLRef *)sourceURLArray[0];

CFURLRef ref=(CFURLRef )sourceURLArray[0];
Run Code Online (Sandbox Code Playgroud)

第一个实际引用数组中对象的内存地址吗?第二个是否复制了它?

我目前追求的主要代码风格是拥有一系列值或对象.我希望能够使用这些值,将它们传递给其他函数,而无需更改原件.

从我所尝试的2个函数声明开始,如下所示.

- (void) loadAudioFileIntoMemory:(CFURLRef *)address channel:(int) value row:(int) value2;

- (void) loadAudioFileIntoMemory:(CFURLRef )address channel:(int) value row:(int) value2;
Run Code Online (Sandbox Code Playgroud)

有什么区别?

pointers objective-c

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

C:这个char指针赋值有什么问题?

一个新手问题:

我正在练习赋予char指针,但发现没有打印出来.这是代码:

#include <stdio.h>

int main (void)
{
    char * option_string = NULL;
    option_string = (char*)malloc(sizeof(5));
    memset(option_string, 0, sizeof(char) * 5);

    int j;
    for ( j = 0; j < 5; j++)
    {
        *option_string++ = 'a';
    }

    printf("print options_string: %s\n", option_string); //!nothing was printed out!
    free(option_string);
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

c string pointers character variable-assignment

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

我应该在删除后指定我的指针0吗?

可能重复:
删除指针后禁用指针是否合适?

我的教授告诉我们,在我们删除它指向的已分配空间后,将指针设置为0是一个好习惯,而且我一直试图养成这样做的习惯.但是当我这样做时,我的编译器会发出警告:

警告W8004 LinkedList.h 102:为'nPtr'分配一个从未在函数LinkedList :: remove(int)中使用的值

我知道警告不是世界末日,我的程序仍然可以编译,但我的OCD不会放过它.所以我问你更多知识渊博的程序员:

删除它的节点后将指针设置为0是否常见,这是一个很好的做法吗?如果我继续让我的程序编译时出现这样的警告,这有关系吗?感谢所有答案!

c++ pointers compiler-warnings

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