我是 C 的初学者。
main() {
int *a-ptr = (int *)malloc(int);
*a-ptr = 5;
printf(“%d”, *a-ptr);
}
问题是:这是否保证打印 5?
答案是:不,有两个原因:
- 你不能在变量名中使用“-”
- “你没有分配 int 存储”
我不明白第二点。存储不是用这条线分配的吗?
int *a-ptr = (int *)malloc(int);
我是 C 的初学者。
main() {
int *a-ptr = (int *)malloc(int);
*a-ptr = 5;
printf(“%d”, *a-ptr);
}
问题是:这是否保证打印 5?
答案是:不,有两个原因:
我不明白第二点。存储不是用这条线分配的吗?
int *a-ptr = (int *)malloc(int);
malloc
接受大小,而不是类型。你需要做malloc(sizeof(int))
.
main() { // wrong. Should return int
int main() { // better
int *a-ptr = //wrong. no dashes in variable names
int *a_ptr = // better, use underscores if you want to have multiparted names
(int *)malloc(int); // wrong. Don't typecast the return of malloc(), also it takes a
// size, not a type
malloc(sizeof(int)); // better, you want enought memory for the sizeof 1 int
因此,您的代码的更好版本是:
int main() {
int *a_ptr = malloc(sizeof(int));
*a_ptr = 5;
printf("%d", *a_ptr);
free(a_ptr); // When you're done using memory allocated with malloc, free it
return 0;
}
由于多种原因,您的代码无效,并且无法编译。
a-ptr
是无效的变量名。-
名称中不允许使用,a_ptr
而是使用(或其他)
malloc
不带类型。它需要一个大小(以字节为单位)来分配。
请务必使用直引号"
而不是您使用的弯引号。
正确的代码如下所示:
int main() {
int *aptr = (int *) malloc(sizeof(int));
*aptr = 5;
printf("%d", *aptr);
return 0;
}
(转换 from malloc
toint *
可能是可选的,具体取决于您的编译器。)