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. 访问基本类型的变量名,相当于访问value列。
公式:a = (select value from LNT where name='a')
2. 访问基本类型的&变量名,相当于访问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. 访问基本类型的变量名,相当于访问value列。
公式:a = (select value from LNT where name='a')
2. 访问基本类型的&变量名,相当于访问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,在基本类型的访问中这个值意义不大,它代表指针的指针。
result
999
0x61fe1c
0x61fe1c
999
0x61fe10
Description
1. 访问基本类型的变量名,相当于访问value列。
公式:a = (select value from LNT where name='a')
2. 访问基本类型的&变量名,相当于访问pointer列,
公式:&a = (select pointer from LNT where name='a')
3. +访问基本类型的指针变量名,相当于访问value列。
公式:p = (select value from LNT where name='p')
4. +访问基本类型的*指针变量名,相当于指针为对应value值的value列
公式:*p = (select value from LNT where pointer=(select value from where name='p'))
5. +访问基本类型的&指针变量名,相当于访问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:定义数组
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. 数组名的本质为指针常量。非基本存储类型都是一个指针。
2. 访问数组名,相当于访问value列。
公式:a = (select value from LNT where name='a')
3. 访问*数组名,相当于访问长子value值。
公式:*a = (select value from LNT where name='a[0]' and pointer=(select value from LNT where name='a'))
4. 访问&数组名,相当于访问pointer值。
公式:&a = (select pointer from LNT where name='a')
5. 访问数组名[index], 相当于访问value列
公式:a[0] = select value from LNT where name='a[0]'
6. 访问&数组名[index], 相当于访问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:二维数组
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. 二维数组名实为二维指针常量。
2. 访问二维数组名,相当于访问value列。
公式:a = (select value from LNT where name='a')
3. 访问*二维数组名,相当于访问长子value值。
公式:*a = (select value from LNT where name='a[0]' and pointer=(select value from LNT where name='a'))
3. 访问**二维数组名,相当于访问长孙value值。
公式:**a = (select value from LNT where name='a[0][0]' and pointer=(select value from LNT where name='a'))
4. 访问&二维数组名,相当于访问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. 字符串名实为字符数组变量名,本质是一个指针常量。
(注意)除了&字符串名,可以访问到指针,其余的a, a[index],&a[index]所代表的指针变量皆是提供字符串形式。
2. 访问字符串名,本该显示value值为一个指针,但因字符串特征,并未返回内存地址,而是直接访问字符串,读此指针后的所有字符,直到size完成,或者遇到\0。
公式:a = (select concat(value) from LNT where name like 'a[%]')
3. 访问*a字符串名,访问了第一个字符,相当于访问长子value列。
公式:*a = (select value from LNT where name='a[0]' and pointer=(select value from LNT where name='a'))
3. 访问&字符串名,相当于pointer列。
公式:&a = (select pointer from LNT where name='a')
4. 访问&字符串名[index],本该显示pointer列,但字符串特征,并未返回内存地址,而是直接访问字符串,读此地址的所有字符串,直到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 |
网友评论