注册 登录
编程论坛 C语言论坛

结构指针问题,请教如下为何没有内容输出?

julinomber2 发布于 2022-11-20 17:22, 763 次点击
#include <stdio.h>

typedef struct {
    float x, y;
} VecR;

VecR *p;

int main() {
    int n;
    for(n=0; n<10;n++) {
        p[n].x = 1.;
        p[n].y = 2.;
    }
    printf("%f",p[0].x);
    return 0;
}
4 回复
#2
forever742022-11-20 17:44
是这样,您使用野指针,就相当于
您印了张名片声称您的地址就是某家银行,然后您就开始访问银行的金库
于是,银行没给您机会
#3
julinomber22022-11-20 17:50
哦 是这么回事啊  非常感谢!!  因为我是想声明一个不确定长度的结构体,所以这么用了。   那有没有办法设计一个不定长度的结构体?
#4
不会游泳的虾2022-11-21 09:30
回复 3楼 julinomber2
C用于存储空间动态分配的函数 malloc()、realloc()可以实现你的需求。
#5
好好刷题2022-12-04 22:50
#include <stdio.h>
#include <stdlib.h>

#define MAXLEN 10

typedef struct {
    float x, y;
} VecR;

int main() {
    VecR *p = (VecR *)malloc(sizeof(VecR)*MAXLEN);
    if(!p) return 1;
   
    int n;
    for(n=0; n<MAXLEN;n++) {
        p[n].x = 1.;
        p[n].y = 2.;
    }
    printf("%f",p[0].x);
   
    return 0;
}
1