小编Bat*_*ude的帖子

C++指针指向Java

我是一个Java菜鸟.我已经能够掌握将C/C++指针转换为Java引用的概念,这已经相当顺利.

我点了一段有指针指针的代码(即**ptr).我需要取消引用指针并更改它指向的指针的值(即*ptr =&newthing;)

这在java中看起来有点难度.有没有人对如何解决这个问题有任何想法?快速谷歌搜索没有任何结果.

这是C++中的代码示例.我想在java中使用类似的东西,但是ptr_to_ptr变量是一个问题:

struct _coord
{
   int x;
   int y;
   _coord * next_coordinate;
} coordinate_t;   

coordinate_t buffer[100];
coordinate_t * head;
coordinate_t ** ptr_to_ptr;

if (wednesday)
{
    ptr_to_ptr = &head;
}
else
{
    ptr_to_ptr = &head->next_coordinate;
}
*ptr_to_ptr = &buffer[3];   // <<<---- HOW DO YOU MAKE THIS WORK?
Run Code Online (Sandbox Code Playgroud)

java

9
推荐指数
2
解决办法
2642
查看次数

了解Android Canvas剪辑

我无法找到答案.考虑下面的剪辑代码:

           boolean is_ok = mycanvas.clipRect(clip_left, clip_top, clip_right+1, clip_bottom+1);
       mycanvas.getClipBounds(clipRect);
       if (!is_ok ||
               clipRect.left != clip_left ||
               clipRect.top != clip_top ||
               clipRect.right != clip_right+1 ||
               clipRect.bottom != clip_bottom+1)
       {
           Log.i("DEBUG", "setClipping failed");
       }
Run Code Online (Sandbox Code Playgroud)

返回剪辑边界时,它们与刚刚设置的不匹配.例如,如果clip_left,clip_top,clip_right,clip_bottom是(100,50,109,59),那么在给定上面的代码的情况下,我希望剪裁边界是(100,50,110,60).事实并非如此.getClipBounds()返回(100,51,110,60).

当我将它设置为50时,为什么top = 51?还有一些我不明白的东西.

android clipping android-canvas

5
推荐指数
1
解决办法
7779
查看次数

Java对象数组崩溃

Java noob问题:

考虑以下C数组和初始化代码:

struct {
  int x;
  int y;
} point_t;

point_t points[1000];
Run Code Online (Sandbox Code Playgroud)

简单.这会在加载时创建并分配内存.

现在考虑Java中的类似内容:

public class point_t
{
   public int x;
   public int y;
}

point_t points[] = new point_t[1000];
// Without this loop, java will crash when you run this
for (int i=0; i<1000; i++)
{
   points[i] = new point_t;
}
points[0].x = 10;  // Crash would occur here without above loop
points[1].x = 10;
Run Code Online (Sandbox Code Playgroud)

最初我的java程序崩溃了一个空指针取消引用.问题是,来自C++,我不知道你必须创建1000个point_t对象.只是一个评论,但这似乎是INSANE.假设阵列大小为100万或10亿.在运行时使用空条目"创建"此数组只需要几秒钟.在C++中,它都发生在加载时.我承认你并不总是知道C++数组的单元格中会有什么,但在我工作的嵌入式系统中,内存通常被自动初始化为零,因此它可以工作.

那么,当你有一个对象数组时,有没有更简单,更快捷,更有效的Java方法来创建数组并分配内存?或者我在上面的代码中做错了什么?

java

4
推荐指数
1
解决办法
650
查看次数

标签 统计

java ×2

android ×1

android-canvas ×1

clipping ×1