Pointers 什么';ptr=&;我的代码是n和ptr=(int*)malloc(4)?
考虑以下示例代码:Pointers 什么';ptr=&;我的代码是n和ptr=(int*)malloc(4)?,pointers,malloc,Pointers,Malloc,考虑以下示例代码: #include <stdio.h> #include <stdlib.h> int main(void){ int i=0,n; int*ptr; /*this program attempts to prompt user to keep entering integer
#include <stdio.h>
#include <stdlib.h>
int main(void){
int i=0,n;
int*ptr; /*this program attempts to prompt user to keep entering integer
values untill he gives 9 as input */
//ptr=&n;
ptr = (int*)malloc(4);
for(i=0;;i++)
{
scanf("%d",ptr+i);
if(*(ptr+i)==9)
return 0;
}
return 0;
}
而不是
ptr = (int*)malloc(4);
它不能正常工作。请澄清为什么一个有效而另一个无效,因为每次
ptr
都是一个指针,用于存储存储整数值的内存块地址。Withptr=&n代码>获取现有变量的地址。
您可以直接访问变量,也可以通过指针访问变量
具有ptr=(int*)malloc(4)代码>获取新分配内存的地址。假设这里的环境中sizeof(int)==4
。
您只能通过指针访问它
在这两种情况下,循环从第二次交互(当>0
时)开始访问不允许访问的内存
如果您观察到一个差异,例如代码似乎与第二个版本兼容,但与第一个版本不兼容,那么解释是您运气好,或者运气不好,这取决于您希望如何以及何时注意错误的理念。withptr=&n代码>获取现有变量的地址。
您可以直接访问变量,也可以通过指针访问变量
具有ptr=(int*)malloc(4)代码>获取新分配内存的地址。假设这里的环境中sizeof(int)==4
。
您只能通过指针访问它
在这两种情况下,循环从第二次交互(当>0
时)开始访问不允许访问的内存
如果您观察到一个差异,例如代码似乎与第二个版本兼容,但与第一个版本不兼容,那么解释是您运气好,或者运气不好,这取决于您希望注意错误的方式和时间
ptr = (int*)malloc(4);