如果你觉得这个问题非常基础,请原谅我.我试了几个小时,只是似乎不明白为什么我的代码不起作用.我只想将一些int值插入int pointer并打印出来.
int val, x;
int *ptr;
ptr = malloc(sizeof(int));
do
{
scanf("%d", &val);
*ptr = val;
ptr++;
}while(val < 20);
for(x=0; x<5; x++) //Print values *ptr
{
printf("ptr[%d]: %d\n", x, *ptr);
ptr++;
}
Run Code Online (Sandbox Code Playgroud)
代码可以编译.但输出是错误的.
输入:4 5 6 7 8 20
输出:
ptr[0]: 20
ptr[1]: 4063428
ptr[2]: 62261273
ptr[3]: 134267354
ptr[4]: 4067081
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
#include <stdlib.h>
int main(void){
int val, x = 0, i;
int *ptr, *p;
ptr = NULL;
while(1== scanf("%d", &val) && val < 20){
if(NULL!=(p = realloc(ptr, (x+1)*sizeof(*p))))//extend a secure memory
ptr = p;//Update Now that realloc have successfully extended
else {
fprintf(stderr, "realloc error!\n");
free(ptr);
exit(-1);
}
ptr[x++] = val;
}
for(i=0, p=ptr; i<x; i++){
printf("ptr[%d]: %d\n", i, *p++);
}
free(ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)