我试图用指针访问我的结构但是我不能,我认为我的语法有问题。这是我的语法
#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;
};
答案 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;
它会起作用。