Code 1:變量聲明
int a;
cout << a << endl; //result: 0
cout << &a << endl; //result: 0x61fe1c
//cout << *a << endl; //error, because a is not a pointer
Result
0
0x61fe1c
Description
1. 訪問(wèn)基本類型的變量名逮刨,相當(dāng)于訪問(wèn)value列呕缭。
公式:a = (select value from LNT where name='a')
2. 訪問(wèn)基本類型的&變量名,相當(dāng)于訪問(wèn)pointer列修己,
公式:&a = (select pointer from LNT where name='a')
Memory datas tables
pointer | value |
---|---|
0x61fe1c | 0 |
Logical names tables
name | type | datatype | pointer | value |
---|---|---|---|---|
a | var | int | 0x61fe1c | 0 |
Code 2:變量定義
int a = 2;
cout << a << endl; //result: 2
cout << &a << endl; //result: 0x61fe1c
//cout << *a << endl; //error, because a is not a pointer
Result
2
0x61fe1c
Description
1. 訪問(wèn)基本類型的變量名恢总,相當(dāng)于訪問(wèn)value列。
公式:a = (select value from LNT where name='a')
2. 訪問(wèn)基本類型的&變量名睬愤,相當(dāng)于訪問(wèn)pointer列片仿,
公式:&a = (select pointer from LNT where name='a')
Memory datas tables
pointer | value |
---|---|
0x61fe1c | 2 |
Logical names tables
name | type | datatype | pointer | value |
---|---|---|---|---|
a | var | int | 0x61fe1c | 2 |
Code 3:定義指針變量
int a=999;
int *p=&a;
cout << a << endl; //result: 999
cout << &a << endl; //result: 0x61fe1c
//cout << *a << endl; //a不是指針,也不是非基本類型尤辱,error
cout << p << endl; //result: 0x61fe1c
cout << *p << endl; //result: 999
cout << &p << endl; //result: 0x61fe10砂豌,在基本類型的訪問(wèn)中這個(gè)值意義不大,它代表指針的指針光督。
result
999
0x61fe1c
0x61fe1c
999
0x61fe10
Description
1. 訪問(wèn)基本類型的變量名阳距,相當(dāng)于訪問(wèn)value列。
公式:a = (select value from LNT where name='a')
2. 訪問(wèn)基本類型的&變量名可帽,相當(dāng)于訪問(wèn)pointer列,
公式:&a = (select pointer from LNT where name='a')
3. +訪問(wèn)基本類型的指針變量名窗怒,相當(dāng)于訪問(wèn)value列映跟。
公式:p = (select value from LNT where name='p')
4. +訪問(wèn)基本類型的*指針變量名,相當(dāng)于指針為對(duì)應(yīng)value值的value列
公式:*p = (select value from LNT where pointer=(select value from where name='p'))
5. +訪問(wèn)基本類型的&指針變量名扬虚,相當(dāng)于訪問(wèn)pointer列
公式:&p = (select pointer from LNT where name='p')
Memory datas tables
pointer | value |
---|---|
0x61fe1c | 2 |
0x61fe10 | 0x61fe1c |
Logical names tables
name | type | datatype | pointer | value |
---|---|---|---|---|
a | var | int | 0x61fe1c | 999 |
p | pointer | int | 0x61fe10 | 0x61fe1c |
Code 4:定義數(shù)組
int a[]={1,2,3,4,4,5,6,7};
cout << a << endl; //result:0x61fe00
cout << *a << endl; //result:1
cout << &a << endl; //result:0x61fe00
cout << a[0] << endl; //result:1
cout << &a[0] << endl; //result:0x61fe00
cout << a[3] << endl; //result:4
cout << &a[3] << endl; //result:0x61fe0c
result
0x61fe00
1
0x61fe00
1
0x61fe00
4
0x61fe0c
Description
1. 數(shù)組名的本質(zhì)為指針常量努隙。非基本存儲(chǔ)類型都是一個(gè)指針。
2. 訪問(wèn)數(shù)組名辜昵,相當(dāng)于訪問(wèn)value列荸镊。
公式:a = (select value from LNT where name='a')
3. 訪問(wèn)*數(shù)組名,相當(dāng)于訪問(wèn)長(zhǎng)子value值堪置。
公式:*a = (select value from LNT where name='a[0]' and pointer=(select value from LNT where name='a'))
4. 訪問(wèn)&數(shù)組名躬存,相當(dāng)于訪問(wèn)pointer值。
公式:&a = (select pointer from LNT where name='a')
5. 訪問(wèn)數(shù)組名[index]舀锨, 相當(dāng)于訪問(wèn)value列
公式:a[0] = select value from LNT where name='a[0]'
6. 訪問(wèn)&數(shù)組名[index]岭洲, 相當(dāng)于訪問(wèn)pointer列
公式:a[0] = select pointer from LNT where name='a[0]'
Memory datas tables
pointer | value |
---|---|
0x61fe00 | 1 |
0x61fe04 | 2 |
0x61fe08 | 3 |
0x61fe12 | 4 |
0x61fe16 | 5 |
0x61fe20 | 6 |
0x61fe24 | 7 |
Logical names tables
name | type | datatype | pointer | value |
---|---|---|---|---|
a | pointer | int[] | 0x61fe00 | 0x61fe00 |
a[0] | var | int | 0x61fe00 | 1 |
a[1] | var | int | 0x61fe04 | 2 |
a[2] | var | int | 0x61fe08 | 3 |
a[3] | var | int | 0x61fe12 | 4 |
a[4] | var | int | 0x61fe16 | 5 |
a[5] | var | int | 0x61fe20 | 6 |
a[6] | var | int | 0x61fe24 | 7 |
Code 5:二維數(shù)組
int a[2][3]={{1,2,3},{4,5,6}};
cout << a << endl; //result:0x61fe00
cout << *a << endl; //result:0x61fe00
cout << **a << endl; //result:1
cout << &a << endl; //result:0x61fe00
cout << a[1] << endl; //result:0x61fe0c
cout << &a[1] << endl; //result:0x61fe0c
cout << *a[1] << endl; //result:4
result
0x61fe00
0x61fe00
1
0x61fe00
0x61fe0c
0x61fe0c
4
Description
1. 二維數(shù)組名實(shí)為二維指針常量。
2. 訪問(wèn)二維數(shù)組名坎匿,相當(dāng)于訪問(wèn)value列盾剩。
公式:a = (select value from LNT where name='a')
3. 訪問(wèn)*二維數(shù)組名雷激,相當(dāng)于訪問(wèn)長(zhǎng)子value值。
公式:*a = (select value from LNT where name='a[0]' and pointer=(select value from LNT where name='a'))
3. 訪問(wèn)**二維數(shù)組名告私,相當(dāng)于訪問(wèn)長(zhǎng)孫value值屎暇。
公式:**a = (select value from LNT where name='a[0][0]' and pointer=(select value from LNT where name='a'))
4. 訪問(wèn)&二維數(shù)組名,相當(dāng)于訪問(wèn)pointer值驻粟。
公式:&a = (select pointer from LNT where name='a')
emory datas tables
pointer | value |
---|---|
0x61fe00 | 1 |
0x61fe04 | 2 |
0x61fe08 | 3 |
0x61fe12 | 4 |
0x61fe16 | 5 |
0x61fe20 | 6 |
Logical names tables
name | type | datatype | pointer | value |
---|---|---|---|---|
a | pointer | int[][] | 0x61fe00 | 0x61fe00 |
a[0] | pointer | int[] | 0x61fe00 | 0x61fe00 |
a[0][0] | var | int | 0x61fe00 | 1 |
a[0][1] | var | int | 0x61fe04 | 2 |
a[0][2] | var | int | 0x61fe08 | 3 |
a[1] | pointer | int[] | 0x61fe12 | 0x61fe12 |
a[1][0] | var | int | 0x61fe12 | 4 |
a[1][1] | var | int | 0x61fe16 | 5 |
a[1][2] | var | int | 0x61fe20 | 6 |
Code 6:字符串定義
char a[]="1234567890";
cout << a << endl; //result: 1234567890
cout << &a << endl; //result: 0x61fe00
cout << *a << endl; //result: 1
cout << &*a << endl; //result: 1234567890
cout << *&a << endl; //result: 1234567890
cout << str51[3] << endl;//result: 4
//cout << *str51[3] << endl; //error, because str51[3] is not a pointer but a prime value.
cout << &str51[3] << endl;//result:4567890
result
1234567890
0x61fe00
1
1234567890
1234567890
4
4567890
Description
1. 字符串名實(shí)為字符數(shù)組變量名根悼,本質(zhì)是一個(gè)指針常量。
(注意)除了&字符串名格嗅,可以訪問(wèn)到指針番挺,其余的a, a[index],&a[index]所代表的指針變量皆是提供字符串形式。
2. 訪問(wèn)字符串名屯掖,本該顯示value值為一個(gè)指針玄柏,但因字符串特征,并未返回內(nèi)存地址贴铜,而是直接訪問(wèn)字符串粪摘,讀此指針后的所有字符,直到size完成绍坝,或者遇到\0徘意。
公式:a = (select concat(value) from LNT where name like 'a[%]')
3. 訪問(wèn)*a字符串名,訪問(wèn)了第一個(gè)字符轩褐,相當(dāng)于訪問(wèn)長(zhǎng)子value列椎咧。
公式:*a = (select value from LNT where name='a[0]' and pointer=(select value from LNT where name='a'))
3. 訪問(wèn)&字符串名,相當(dāng)于pointer列把介。
公式:&a = (select pointer from LNT where name='a')
4. 訪問(wèn)&字符串名[index]勤讽,本該顯示pointer列,但字符串特征拗踢,并未返回內(nèi)存地址脚牍,而是直接訪問(wèn)字符串,讀此地址的所有字符串巢墅,直到size完成诸狭,或者遇到\0。
公式:&a[index] = ...
emory datas tables
pointer | value |
---|---|
0x61fe00 | '1' |
0x61fe01 | '2' |
0x61fe02 | '3' |
0x61fe03 | '4' |
0x61fe04 | '5' |
0x61fe05 | '6' |
0x61fe06 | '7' |
0x61fe07 | '8' |
0x61fe08 | '9' |
Logical names tables
name | type | datatype | pointer | value |
---|---|---|---|---|
a | pointer | char[] | 0x61fe00 | 0x61fe00 |
a[0] | var | char | 0x61fe00 | 1 |
a[1] | var | char | 0x61fe01 | 2 |
a[2] | var | char | 0x61fe02 | 3 |
a[3] | var | char | 0x61fe03 | 4 |
a[4] | var | char | 0x61fe04 | 5 |
a[5] | var | char | 0x61fe05 | 6 |
a[6] | var | char | 0x61fe06 | 6 |
a[7] | var | char | 0x61fe07 | 6 |
a[8] | var | char | 0x61fe08 | 6 |