address型別被廣泛的用在以太坊的合約**中,也是智慧型合約和一般**最大的不同
一般來說有這些用法
1.address a = msg.sender
//誰呼叫合約
2.address b = this
//當前合約的位址
address型別的方法:
1.balance
2.transfer
定義方式主要常見的有
**示例一:
pragma solidity 0.4.10;
contract demo
step 2: 新增乙個建構函式
pragma solidity 0.4.10;
contract demo}
step 3: 新增乙個方法 add()
function add(bytes32 usr,uintamount)
step 4: 新增乙個 update()
function update(bytes32 usr,uint amount)
step 5: 新增乙個 del()
function del(bytes32 usr)
示例2:
撰寫乙個簡單的合約
pragma solidity 0.4.7;
contract coin
這裡我們定義了乙個address 作為key, uint做為value的hashtable balances; 我們還定義了乙個address的變數minter;
function coin()
這裡的**minter = msg.sender; 代表建立這個合約的賬戶位址,被賦值給變數minter.
這裡的核心**在於,如果呼叫這個方法的賬戶,不是minter, 也就是建立合約的賬戶的話,這個mint()
將無法被執行。 只有是建立合約的賬戶,也就是minter
才可以執行它
這個非常簡單的轉移貨幣的**,也就是說msg.sender減少一定代幣,接受者receiver增加一定代幣
完整**如下:
pragma solidity 0.4.7;
contract coin
function mint(address receiver, uint amount)
function send(address receiver, uint amount)
}
命名型別和未命名型別和基礎型別
命名型別 乙個命名型別一定跟其他型別不同.哪些是命名型別 1.預先宣告的型別,如int int8 boo float32.2.使用type宣告的型別,類似起別名,如type aint int var i int named type type myint int named type var b b...
引用型別和值型別
c 是一種型別安全的語言。每乙個變數都要求定義為乙個特定的型別,並且要求儲存在變數中的值只能是這種型別的值。變數既能儲存值型別,也可以儲存引用型別,還可以是指標。這一課將講述前兩種型別,關於指標的討論我們將在下一課中進行。下面是關於值型別和引用型別不同點的概論 如果乙個變數v儲存的是值型別,則它直接...
引用型別和值型別
c 中值型別和引用型別作為方法引數傳遞的時候其實都可以說是 值 的傳遞,只不過這裡的 值 指代的東西有所區別。當方法的引數為值型別時,方法傳遞的是值本身的值。當方法的引數為引用型別時,方法傳遞的則是應用型別的引用的位址,也就是引用型別位址在棧上的值。舉個引用型別作為引數傳遞的例子 static vo...