【发布时间】:2014-02-14 14:43:18
【问题描述】:
int *ptr;
ptr=(int *)malloc(sizeof(int)*2);
ptr=100; /*What will happen if I put an asterisk(*) indicating *ptr=100? */
ptr++;
printf("ptr=%d",*ptr);
free(ptr);
所以,我希望指针递增。我为指针分配了 4(2*2) 的大小。但我无法理解指针如何仅增加 2。如果我在第 3 行加上一个星号,那就是 *ptr=100;它显示了其他东西。
【问题讨论】:
-
Please don't cast the return value of
malloc()in C。除了%p和转换为void *之外,不要打印指针。 -
公平地说,这可能不是故意的,他在他的
printf()调用中取消引用该指针,所以%d在这里是正确的,%p不是。格式字符串的内容似乎表明希望打印ptr的值,而不是它所指向的值,但很难确定。
标签: c pointers dynamic-allocation