Questions tagged «pointers»

“指向”存储在内存中的另一个值的数据类型。指针变量包含某个其他实体(变量或函数或其他实体)的内存地址。此标记应用于涉及使用指针而不是引用的问题。使用指针的最常见的编程语言是C,C ++,Go和汇编语言。使用特定的语言标签。其他有用的标记是描述指针用法的方法,函数,结构等。

2
指针指向的int的增量值
我有一个int指针(即int *count),我想通过使用++运算符来增加所指向的整数。我以为我会打电话给: *count++; 但是,我得到了一个构建警告“表达式结果未使用”。我可以打电话 *count += 1; 但是,我也想知道如何使用++运算符。有任何想法吗?

7
通过JNI在C和Java之间传递指针
目前,我正在尝试创建一个使用CUDA功能的Java应用程序。CUDA与Java之间的连接工作正常,但是我还有另一个问题,想问一下我对此是否正确。 当我从Java调用本机函数时,我将一些数据传递给它,这些函数计算出一些东西并返回结果。是否可以让第一个函数返回对此结果的引用(指针),我可以将其传递给JNI并调用另一个对结果进行进一步计算的函数? 我的想法是通过将数据保留在GPU内存中并仅将引用传递给它,以便其他功能可以使用它,从而减少往返于GPU的数据复制所带来的开销。 经过一段时间的尝试,我自己想,这是不可能的,因为在应用程序结束后(在这种情况下,当C函数终止时)指针被删除。这个对吗?还是我对C语言很不好而看不到解决方案? 编辑:好吧,将问题扩大一点(或更清楚地说):函数结束时是否由JNI本机函数分配的内存被释放了?或者在JNI应用程序结束或手动释放它之前,我是否仍可以访问它? 感谢您的输入 :)

3
如何使用迭代器?
我正在尝试计算两点之间的距离。我在C ++中将两个点存储在向量中:(0,0)和(1,1)。 我应该得到结果 0 1.4 1.4 0 但是我得到的实际结果是 0 1 -1 0 我认为在向量中使用迭代器的方式存在问题。我该如何解决这个问题? 我在下面发布了代码。 typedef struct point { float x; float y; } point; float distance(point *p1, point *p2) { return sqrt((p1->x - p2->x)*(p1->x - p2->x) + (p1->y - p2->y)*(p1->y - p2->y)); } int main() { vector <point> po; point …


4
在功能名称前加星号的功能是什么?
我对在大多数C程序上看到的对我来说不熟悉的函数声明感到困惑。 void *func_name(void *param){ ... } *该功能意味着什么?我对*变量类型()的理解是,它创建了一个指向另一个变量的指针,因此它可以跟踪将后一个变量存储在内存中的地址。但是在这种情况下,我不知道这个*星号意味着什么。
71 c  function  pointers 



5
在C中强制转换指针的规则是什么?
K&R不会超越它,但他们会使用它。我尝试通过编写示例程序来了解其工作原理,但效果并不理想: #include <stdio.h> int bleh (int *); int main(){ char c = '5'; char *d = &c; bleh((int *)d); return 0; } int bleh(int *n){ printf("%d bleh\n", *n); return *n; } 它可以编译,但是我的print语句吐出垃圾变量(每次调用程序时它们都不同)。有任何想法吗?
70 c  pointers  casting 

13
NULL是否总是假?
是否可以安全地假设NULL在C语言中始终将其转换为false? void *somePtr = NULL; if (!somePtr) { /* This will always be executed? */ } 还是应该明确检查其价值NULL?
69 c  null  pointers 

8
指针和引用参数之间的区别?
这些是一样的吗: int foo(bar* p) { return p->someInt(); } 和 int foo(bar& r) { return r.someInt(); } 忽略空指针电位。这两个函数在功能上是否相同,无论someInt()是虚拟的还是传递给bar的子类bar? 这个切片什么吗? bar& ref = *ptr_to_bar;

9
C编程:另一个函数内的malloc()
我需要malloc() 其他功能的帮助。 我正在从我的函数传递一个指针和一个大小给函数main(),我想malloc()从被调用的函数内部使用该指针动态分配内存,但是我看到的是...正在分配的内存是用于在我的调用函数中声明的指针,而不用于main()。 我该如何传递指向函数的指针并从被调用函数内部为传递的指针分配内存? 我编写了以下代码,并得到如下所示的输出。 资源: int main() { unsigned char *input_image; unsigned int bmp_image_size = 262144; if(alloc_pixels(input_image, bmp_image_size)==NULL) printf("\nPoint2: Memory allocated: %d bytes",_msize(input_image)); else printf("\nPoint3: Memory not allocated"); return 0; } signed char alloc_pixels(unsigned char *ptr, unsigned int size) { signed char status = NO_ERROR; ptr = NULL; ptr …
69 c  function  pointers  malloc 




6
为什么要声明这种取消引用编译器特定的类型标记指针警告?
我已经阅读了 有关Stack Overflow RE的各种文章 :取消引用类型标记的指针错误。我的理解是,该错误本质上是编译器警告,它警告通过不同类型的指针访问对象的危险(尽管似乎为产生了例外),这是可以理解且合理的警告。 char* 我的问题特定于以下代码:为什么将指针的地址强制转换void**为对此警告有效的指针(通过提升为错误-Werror)? 而且,此代码针对多个目标体系结构进行了编译,只有其中一种会生成警告/错误-这是否暗示它合法地是特定于编译器版本的缺陷? // main.c #include <stdlib.h> typedef struct Foo { int i; } Foo; void freeFunc( void** obj ) { if ( obj && * obj ) { free( *obj ); *obj = NULL; } } int main( int argc, char* argv[] ) { …
38 c  pointers  casting 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.