如何使用指针访问C上的结构

时间:2014-12-02 12:42:32

标签: c pointers struct

我试图用指针访问我的结构但是我不能,我认为我的语法有问题。这是我的语法

#include<stdio.h>
#include "str.h"
void main()
{
    typedef struct t_matakuliah t_mata_kuliah;
    t_mata_kuliah mk_mhs2;
    t_mata_kuliah *p_mk = mk_mhs2;
    p_mk->kode_mk;
    p_mk->nama_mk;
    p_mk->sks;
    printf("%s\n", p_mk->kode_mk);
    printf("%s\n", p_mk->nama_mk);
    printf("%d\n", p_mk->sks);
}

但如果我使用点运算符来访问它,它就可以工作。

这是我的结构

struct t_matakuliah{
    char kode_mk[10], nama_mk[50];
    int sks;
};

2 个答案:

答案 0 :(得分:1)

回想一下,指针指向地址某事。但这里

t_mata_kuliah *p_mk = mk_mhs2;

您将指针p_mk指定给mk_mhs2而不是其地址。要获取它的地址,只需在mk_mhs2之前添加一个放大器,使它看起来像这样:

t_mata_kuliah *p_mk = &mk_mhs2;

<小时/> 不能分配数组,即它们不可分配。对于char数组,您可以使用strcpy将字符串复制到数组中。例如

strcpy(p_mk->kode_mk, "String");
strcpy(p_mk->nana_mk, "SecondString");

答案 1 :(得分:0)

t_mata_kuliah * p_mk = mk_mhs2;

在此行中,您必须将地址分配给该指针变量。给出这样的代码。

t_mata_kuliah * p_mk =&amp; mk_mhs2;

它会起作用。