在 C 语言中,通常这就是我们使用指针获取输入的方式,那么为啥它不起作用呢?还是我在某些时候错了?
Posted
技术标签:
【中文标题】在 C 语言中,通常这就是我们使用指针获取输入的方式,那么为啥它不起作用呢?还是我在某些时候错了?【英文标题】:In C language, normally this is how we take input using pointers, then why is it not working though ? Or am I wrong at some point?在 C 语言中,通常这就是我们使用指针获取输入的方式,那么为什么它不起作用呢?还是我在某些时候错了? 【发布时间】:2021-12-31 21:29:57 【问题描述】:通常我们在使用指针时采用以下方式输入。但是这次结构体是和指针一起使用的。
它就像一个数组一样工作,但在获取大小后不获取输入数字。
#include<stdio.h>
#include<stdlib.h>
struct point
int *data;
int size;
;
int main()
struct point temp;
scanf("%d",&temp.size);
printf("\n Enter data ---- \n");
for(int i=0 ; i<temp.size ; i++)
scanf("%d",(temp.data+i);
printf("\n The data is ----- \n");
for(int i=0 ; i<temp.size ; i++)
printf("%d",*(temp.data+i));
return 0;
有人可以帮忙吗....
【问题讨论】:
欢迎来到 SO。我们不仅使用指针,还使用我们为此目的分配的内存地址。您的指针data
未指向任何有效地址。
"它就像一个数组,但是......" 这是因为指针不是数组。数组带有存储值所需的所有内存。指针只带有地址。你的工作是让它指向一个足够大内存的有效地址。通过获取合适变量的地址或动态分配内存。
temp.data
指向哪里?
好的,明白了。感谢您的帮助。
【参考方案1】:
这不是一个完整的答案,但它应该指出你正确 方向。
你认为你的程序的这个稍微修改过的版本(不使用结构)有效吗?
...
int *data; // no struct used here
int size;
int main()
scanf("%d",&size);
printf("\n Enter data ---- \n");
for(int i = 0 ; i < temp; i++)
scanf("%d", (data+i);
...
【讨论】:
以上是关于在 C 语言中,通常这就是我们使用指针获取输入的方式,那么为啥它不起作用呢?还是我在某些时候错了?的主要内容,如果未能解决你的问题,请参考以下文章