【发布时间】:2015-08-30 03:39:41
【问题描述】:
我是 C 的初学者,现在我正在学习指针和动态内存分配。我想编写一个简单的程序来创建空数组并检查给定数字的存在。这是我的代码:
/* create an empty array pointer */
int* createArray(){
int *a = (int*) malloc(sizeof(int));
return a;
}
void findArrayElement(int *list, int element){
int i;
int len = (sizeof(list) / sizeof(int));
if (sizeof(list) == 0) {
printf("NO\n");
return;
}
for (i=0; i<len; i++) {
if (list[i] == element) {
printf("YES\n");
return;
}
}
printf("NO\n");
}
int main(int argc, const char * argv[]) {
int *p;
p = createArray();
printf("size of int is: %lu\n", sizeof(int));
printf("size of p is: %lu\n", sizeof(p));
printf("LENGTH of p is: %lu\n", ARRLENGTH(p));
findArrayElement(p, 2);
findArrayElement(p, 0);
return 0;
}
但是当我运行程序时,我总是在寻找 0 时得到 'YES',所以
- 有没有办法区分整数 0 和完整的空数组?
- 另外我不确定我的函数
createArray()是否是创建空数组的正确方法。
谢谢大家。
【问题讨论】:
-
旁注:您正在创建一个包含单个条目的数组。