# solidity学习-function和dyte数组

By [zkmark](https://paragraph.com/@zkmark) · 2021-11-30

---

一. function
-----------

        function名字(参数1 名字, 参数2 名字, … ) 访问权限 修饰符 returns(参数1 名字, 参数2 名字, … )
    

可见度/访问权限，即public/private/internal/external **如果不写则系统默认为public并且警告；**

修饰符，即view/pure/payable **如果需要花费gas则不写；**

returns(类型1 名字,类型2 名字，。。。,类型n 名字) **PS.如果有的话**

> public：任何人都可以调用该函数，包括DApp的使用者。 private：只有合约本身可以调用该函数（在另一个函数中）。 internal：只有这份合同以及由此产生的所有合同才能称之为合同。 external：只有外部可以调用该函数，而合约内部不能调用。

> view: 可以自由调用，因为它只是“查看”区块链的状态而不改变它 pure: 也可以自由调用，既不读取也不写入区块链 payable:常常用于将代币发送给合约地址。

二. dytes数组
----------

1.  一个dytes=8个位的字节：
    

bytes1 = uint8；bytes2 = uint16；bytes3 = uint32；…；bytes32 = uint256

选择bytes的理由：

*   可以更好的表达16进制，如bytes1=0x6A，bytes1=（XXXX XXXX）正好四个表示一个16进制，以此类推；
    
*   2.bytes数据声明时加入public，可以调用.length；
    
*   bytes内部**自带length**长度函数，而且**长度固定**，而且**长度不可以被修改；**
    

2\. 可变长度byte数组

bytesarr = new bytes(length);

---

*Originally published on [zkmark](https://paragraph.com/@zkmark/solidity-function-dyte)*
