iT邦幫忙

6

C++ 指標 30日(13)

指標就在前方不遠處...


今日主題:三星指標

既然有雙星指標,如果願意,也可以再加一顆星。

請看程式碼:

#include <stdio.h>

main()
{
   int x = 100;
   int *p1 = &x;
   int **p2 = &p1;
   int ***p3 = &p2;
   
   printf("%p\n", p1);	  //0x7fff220a1324
   printf("%d\n", *p1);	  //100
   printf("%p\n", p2);	  //0x7fff220a1318
   printf("%p\n", *p2);	  //0x7fff220a1324
   printf("%d\n", **p2);  //100
   printf("%p\n", p3);	  //0x7fff220a1310
   printf("%p\n", *p3);	  //0x7fff220a1318
   printf("%p\n", **p3);  //0x7fff220a1324
   printf("%d\n", ***p3); //100
}

鐵人文總整理


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2013-09-28 12:08:09

投降暈

總裁 iT邦好手 1 級 ‧ 2013-09-28 12:57:01 檢舉

睡覺那時有流星雨呢??...哈哈

總裁 iT邦好手 1 級 ‧ 2013-09-28 12:58:17 檢舉

不會就這樣一直加到30天了吧...汗

ted99tw iT邦高手 1 級 ‧ 2013-09-28 13:12:11 檢舉

可惡,被發現了,那就得用別招了...Orz

0
pajace2001
iT邦研究生 1 級 ‧ 2013-09-28 22:03:40

不知道30星指標會發生什麼事?暈暈

0
一級屠豬士
iT邦大師 1 級 ‧ 2013-09-29 09:20:04

來個golang版本的.

<pre class="c" name="code">
// threestar
package main

import (
	"fmt"
)

func main() {
	var x int = 100
	var p1 *int = &x
	var p2 **int = &p1
	var p3 ***int = &p2

	fmt.Printf("x     = %v\n", x)
	fmt.Printf("&x    = %v\n", &x)
	fmt.Printf("p1    = %v\n", p1)
	fmt.Printf("*p1   = %v\n", *p1)
	fmt.Printf("p2    = %v\n", p2)
	fmt.Printf("*p2   = %v\n", *p2)
	fmt.Printf("**p2  = %v\n", **p2)
	fmt.Printf("p3    = %v\n", p3)
	fmt.Printf("*p3   = %v\n", *p3)
	fmt.Printf("**p3  = %v\n", **p3)
	fmt.Printf("***p3 = %v\n", ***p3)
}

執行結果:

<pre class="c" name="code">
$ ./threestar 
x     = 100
&x    = 0xf840039100
p1    = 0xf840039100
*p1   = 100
p2    = 0xf840039108
*p2   = 0xf840039100
**p2  = 100
p3    = 0xf840039110
*p3   = 0xf840039108
**p3  = 0xf840039100
***p3 = 100
看更多先前的回應...收起先前的回應...
pajace2001 iT邦研究生 1 級 ‧ 2013-09-29 10:22:50 檢舉

golang ?? 那是什麼阿 疑惑

ted99tw iT邦高手 1 級 ‧ 2013-09-29 10:39:10 檢舉

p3 = 0xf840039110
*p3 = 0xf840039108

好好玩喔,看起來p2才2 bytes...(難道是16位元機器)汗

p2 = 0xf840039108
p3 = 0xf840039110

看起來p2才2 bytes

泰大是要考試嗎

0xf840039110 - 0xf840039108 + 1 很明顯是 8 個 bytes 呀
忙

ted99tw iT邦高手 1 級 ‧ 2013-09-29 11:30:01 檢舉

唉,陰溝裏翻船...臉紅

我要留言

立即登入留言