c - 指针时无法使用箭头符号访问结构数据
问题描述
我创建了一个结构数组,但出现 BAD_ACCESS 错误。当我将所有内容切换为点表示法时,它工作正常,这是为什么呢?
结构
typedef struct data{
int num;
}data;
主要的
int main(void){
// This works
data data[4];
data[0].num = 10;
printf("Number is = %d\n", data[0].num);
// This does not work
data *data[4];
data[0]->num = 10;
printf("Number is = %d\n", data[0]->num);
解决方案
// This does not work
data *data[4];
data[0]->num = 10;
printf("Number is = %d\n", data[0]->num);
由于data
是一个由四个指针组成的数组,data[0]
因此是这四个指针中的第一个。但它指向什么?由于您还没有做过类似的事情data[0] = malloc(sizeof(struct data));
,所以它没有特别指出任何东西——未初始化的垃圾。尝试写入指针指向的内容会导致错误的访问错误,这并不奇怪。
在取消引用指针之前,您需要使指针实际指向某个东西。
推荐阅读
- javascript - 在 Javascript 中生成 HMAC 与在 python 中生成的 HMAC 不匹配(使用 utf-8 编码字符)
- php - php if else条件在变量中作为字符串
- reactjs - 带有 next.js 的动态标头
- java - 试图理解 Liskov 替换原理
- php - Stripe 客户门户 PHP 实施 - 将客户重定向到 URL
- assembly - 为什么“推送”会在这里导致段错误?
- excel - 等待 OLE 操作 - 自动“单击”好吗?
- sql - 如何从一组有序的行中完全选择下一行和上一行?
- c++ - if 语句或比较 C++
- networking - Openstack:如何给管理网络Internet?