在看老师代码的时候,发现ADT中的 struct 有时候写到了 adt.c 里面,有时候写到了 adt.h 里面,其实有些困惑,经过仔细研究,发现写在 adt.h 中的 struct 可以在 test.c 中直接使用,而在 adt.c 中的 struct 只有 adt.c 可以使用,因此需要在 adt.h 中定义相应的指针才可以使用。

总结:

  • struct 写在 adt.h 中,都可以调用
  • struct 写在 adt.c 中,只要 adt.c 可以调用

☀☀☀<< 举例 >>☀☀☀

adt.c 中建立 struct,在 adt.h 建立 指针,但是在 test.c 中无法访问

adt.h

#include <stdio.h>
#include <stdlib.h> typedef float Weight;
typedef int Vertex; typedef struct edge *Edge; void showEdge(Edge);
Edge newEdge(Vertex, Vertex, Weight);

adt.c

#include <stdio.h>
#include <stdlib.h>
#include "adt.h" struct edge {
Vertex v;
Vertex w;
Weight x;
}; Edge newEdge(Vertex v, Vertex w, Weight x) { // create an edge from v to w
Edge e = malloc(sizeof(struct edge)); e->v = v;
e->w = w;
e->x = x; return e;
} void showEdge(Edge e) { // print an edge and its weight
printf("%d-%d: %.2f", e->v, e->w, e->x);
return;
}

test.c

#include "adt.h"

int main() {
Edge e = newEdge(2, 3, 4);
showEdge(e); //printf("\n%d, %d, %0.2f\n", e->v, e->w, e->x); return 0;
}

output:

2-3: 4.00

☀☀☀<< 举例 >>☀☀☀

adt.h 中建立 struct,adt.c 和 test.c 都可以调用,但是相对于安全性较弱

adt.h

#include <stdio.h>
#include <stdlib.h> typedef float Weight;
typedef int Vertex; typedef struct {
Vertex v;
Vertex w;
Weight x;
} Edge; void showEdge(Edge);
Edge newEdge(Vertex, Vertex, Weight);

adt.c

#include <stdio.h>
#include <stdlib.h>
#include "adt.h" Edge newEdge(Vertex v, Vertex w, Weight x) { // create an edge from v to w
Edge e = {v, w, x};
return e;
} void showEdge(Edge e) { // print an edge and its weight
printf("%d-%d: %.2f", e.v, e.w, e.x);
return;
}

test.c

#include "adt.h"

int main() {
Edge e = newEdge(2, 3, 4);
showEdge(e); printf("\n%d, %d, %0.2f\n", e.v, e.w, e.x); return 0;
}

output:

2-3: 4.00
2, 3, 4.00

【429】关于ADT的访问权限的更多相关文章

  1. Java类访问权限修饰符

    一.概要 通过了解Java4种修饰符访问权限,能够进一步完善程序类,合理规划权限的范围,这样才能减少漏洞.提高安全性.具备表达力便于使用. 二.权限表 修饰符 同一个类 同一个包 不同包的子类 不同包 ...

  2. MongoDB 安全和访问权限控制

    MongoDB的访问控制能够有效保证数据库的安全,访问控制是指绑定Application监听的IP地址,设置监听端口,使用账户和密码登录 一,访问控制的参数 1,绑定IP地址 mongod 参数:-- ...

  3. 窥探Swift之类的继承与类的访问权限

    上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过 ...

  4. Android Permission 访问权限大全(转)

    程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES允 ...

  5. SQL SERVER 属性OWNER不可用于数据库xxx。该对象可能没有此属性,也可能是访问权限不足而无法检索。

    今天遇到一个案例:右键单击数据库的属性时出现下面错误提示: 属性Owner不可用于数据库xxx,该对象可能没有此属性,也可能是访问权限不足而无法检索. 使用脚本查看该数据库的Owner时发现Owner ...

  6. (转)浅析Java中的访问权限控制

    原文地址: http://www.cnblogs.com/dolphin0520/p/3734915.html 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下 ...

  7. SVN版本库(访问权限)配置实例笔记

    http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. ...

  8. service 03 iis之服务器无访问权限

    这两天在Service 03 的iis 6.0 里面配置一个aspx 的网站 ,总是遇到一个问题  401.2   无权限访问,于是去百度了一下好多的方法,基本上是关于设置匿名用户,打开IUSER用户 ...

  9. 使用nginx和iptables做访问权限控制(IP和MAC)

    之前配置的服务器,相当于对整个内网都是公开的 而且,除了可以通过80端口的nginx来间接访问各项服务,也可以绕过nginx,直接ip地址加端口访问对应服务 这是不对的啊,所以我们要做一些限制 因为只 ...

随机推荐

  1. es6 let介绍及应用场景

    关于更多es6建议去看阮一峰的博客~ es6入门:http://es6.ruanyifeng.com/ 源码仓库:https://github.com/ruanyf/es6tutorial let介绍 ...

  2. php 实现密码错误三次锁定账号10分钟

    /** * 登录 * 1.接收数据 * 2.正则判断接收到的数据是否合理 * 3.根据用户名获取用户数据 * 获取到数据 -> 继续执行 * 没有获取到数据 -> 提示:用户名密码错误 * ...

  3. bzoj 4128: Matrix ——BSGS&&矩阵快速幂&&哈希

    题目 给定矩阵A, B和模数p,求最小的正整数x满足 A^x = B(mod p). 分析 与整数的离散对数类似,只不过普通乘法换乘了矩阵乘法. 由于矩阵的求逆麻烦,使用 $A^{km-t} = B( ...

  4. Python3和Python2中 int 和 long的区别?

    int(符号整数):通常被称为是整数或整数,没有小数点的正或负整数: long(长整数):无限大小的整数,这样写整数和一个大写或小写的L.

  5. Linux rpm安装指定安装路径

    可以使用prefix参数. rpm -i –prefix=/home/gpadmin    greenplum-db-6.0.0-rhel6-x86_64.rpm 将greenplum-db-6.0. ...

  6. YAML_13 嵌套循环,循环添加多用户

    with_nested ansible]# vim add1.yml --- - hosts: web2   remote_user: root   vars:     un: [a, b, c]   ...

  7. php大文件分块上传断点续传demo

    前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...

  8. Halting Problem

    Halting Problem: 传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4049 总结一个小规律:题目中给的 ...

  9. flutter 省市区选择器 city_pickers 的简单实用

    Github地址:https://github.com/hanxu317317/city_pickers packages地址: https://pub.flutter-io.cn/packages/ ...

  10. Spark设置自定义的InputFormat读取HDFS文件

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/problem_spark_reading_hdfs_serial ...