我一直用 Java 编程,这可能就是我对此感到如此困惑的原因:
在 Java 中,我声明了一个指针:
int[] array
并初始化它或为其分配一些内存:
int[] array = {0,1,0}
int[] array = new int[3]
现在,在 C 语言中,一切都变得如此混乱。起初我认为这就像声明它一样简单:
int array[]
并对其进行初始化或为其分配一些内存:
int array[] = {0,1,0}
int array[] = malloc(3*sizeof(int))
int array[] = calloc(3,sizeof(int))
除非我错了,否则以上所有内容都是等效的 Java-C,对吗?
然后,今天我遇到了一个代码,其中我发现了以下内容:
pthread_t tid[MAX_OPS];
和下面的一些行,没有任何初始化......
pthread_create(&tid[0],NULL,mou_usuari,(void *) 0);
令人惊讶的是(至少对我来说),代码有效!至少在 Java 中,这会返回一个不错的“NullPointerException”!
所以,按顺序:
我对所有 Java-C“翻译”都正确吗?
为什么该代码有效?
malloc(n*sizeof(int))
使用和有什么区别calloc(n,sizeof(int))
吗?
提前致谢