Tag: 指针

理解C中的指针

我正在尝试学习C中的指针,但是它与以下概念混淆: char *string = “hello” char *string2; 有什么区别: A.) *string2 = string; 然后 B.) string2 = “bye”;

为什么pthread_join()的第二个参数是**,指向指针的指针?

我是使用pthread新手,也不熟悉指针指针。 有人可能会解释为什么pthread_join()的第二个参数是一个void ** 。 为什么这样设计。 int pthread_join(pthread_t thread, void **value_ptr);

在ac函数中返回struct

我有类似下面的C代码: struct MyStruct MyFunction (something here) { struct MyStruct data; //Some code here return data; } 返回值是数据的内存块的引用还是副本? MyFunction应该返回struct MyStruct *(带有相应的内存分配)而不是struct MyStruct吗?

解除引用的指针构造的地址

在unqlite c库中,我找到了以下代码: pObj = jx9VmReserveMemObj(&(*pVm),&nIdx); 其中pVm是: typedef struct jx9_vm jx9_vm; jx9_vm *pVm 和被调用的函数声明为: jx9_value * jx9VmReserveMemObj(jx9_vm *, sxu32 *); 什么构造&(*pVm)用于调用而不仅仅是pVm ? &(*pVm)相当于pVm吗?

结构/对象内的存储顺序

考虑这两种情况: struct customType { dataType1 var1; dataType2 var2; dataType3 var3; } ; customType instance1; // Assume var1, var2 and var3 were initialized to some valid values. customType * instance2 = &instance1; dataType1 firstMemberInsideStruct = (dataType1)(*instance2); class CustomType { public: dataType1 member1; dataType2 member2; retrunType1 memberFunction1(); private: dataType3 member3; dataType4 member4; retrunType2 memberFunction2(); }; customType object; […]

如何在openCL中将char *类型转换为int *

任何人都可以告诉我如何在OpenCL内核函数中对一个指向int*的char*指针进行类型转换? 我试过((int*) char_pointer)但它没有用。

void **和void *的编译警告

我有一个关于void*和void** ,我知道这是一个老问题,并且在stackoverflow之前已经被问过(有点)。 所以问题如下: 当我在ubuntu 10.10下使用gcc 4.4.3编译此代码时,我收到以下警告: zz.c: In function ‘main’: zz.c:21: warning: passing argument 1 of ‘bar’ from incompatible pointer type zz.c:9: note: expected ‘void **’ but argument is of type ‘float **’ 为什么将变量x作为foo()的参数传递是可以的,但是将变量y作为bar()的参数传递是不行的。 我可以通过将两个变量显式地转换为void*和void**来解决这个问题。 void foo (void* a){ } void bar(void **a){ *a = (float *) malloc(100*sizeof(float)); } int main (){ float *x = […]

定义char a 和char(* a)之间有什么区别?

我只是想确保C语言中* a [5]和(* a)[5]之间的区别。 我知道* a [5]意味着数组a可以有五个元素,每个元素都是指针。 所以, char *p = “ptr1”; char *p2 = “ptr2”; char *a[5] = { p , p2 }; 它确实有意义。 但是,当我将*a[5]更改为(*a)[5]它不起作用。 char (*a)[5] = { p , p2}; (*a)[5]到底意味着什么? 此外, *a[5]和a[5][] , (*a)[5]和a[][5]之间有什么区别吗?

将int值分配给地址

我认为以下代码是正确的,但它不起作用。 int x, *ra; &ra = x; 和 int x, ra; &ra = x; 如果这两个代码段都正确,请帮助我。 如果没有,你在他们身上看到了什么错误?

cJSON内存泄漏

我在程序中使用cJSON将我的值转换为JSON并将其写入文件。 以下是我的代码示例: void writeStructToFile(IOPipe this, struct structtype somevalues) { cJSON *jout = cJSON_CreateObject(); cJSON_AddItemToObject(jout, “V1”, cJSON_CreateNumber(somevalues.v1)); cJSON_AddItemToObject(jout, “V2”, cJSON_CreateNumber(somevalues.v2)); fprintf(this->outstream, “%s”, cJSON_Print(jout)); cJSON_Delete(jout); } 效果很好,但过了一段时间后,我发现Linux(嵌入式)因为内存使用exception或设备(在Cortex A8上)挂起而导致程序死机。 我发现调试后,即使我在结尾处删除指针,该泄漏也会出现在此函数中。 谁能看到泄漏?