gpt4 book ai didi

c - 为 C int 指针赋值

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:35 24 4
gpt4 key购买 nike

如果您觉得这个问题非常基础,请原谅。我试了几个小时,只是似乎不明白为什么我下面的代码不起作用。我只想将一些 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++;
}

代码可以编译。但是输出是错误的。输入:4 5 6 7 8 20

输出:

ptr[0]: 20
ptr[1]: 4063428
ptr[2]: 62261273
ptr[3]: 134267354
ptr[4]: 4067081

最佳答案

#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;
}

关于c - 为 C int 指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com