对指针仍有不理解,能否请大神再指导下,先谢谢啊

时间:2022-10-11 15:49:12
我对于指针的理解是:
假设有指针P1,那么
P1
--------
123  456
如上123是P1自己的存放地址,456是P1指向的地址
这样对吗?


但是问题来了,如下
char const* ppp="12345";
这里ppp是一个指针?,好吧
ppp自身肯定存在于某个地址,假设是789,这个没错
那么如上申明,就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

或者说这里的char const* ppp 这个变量保存的不是地址,是一个字符串。
所以char const* 是一种特殊的指针,它并没有指向别的地址?

26 个解决方案

#1


int a;
.....
int* p1=&a;

p1是一个内存单元,这个单元的值是变量a的地址,至于p1本身的地址未知
如果想获得p1本身的地址,则使用
int** p2=&p1;获得,p2也是一个内存单元,也就是所谓的指针的指针

#2


比如0xff38 这个地址存放变量a的值456
int* p=&a
p==0xff38
*p==456
p自己的存放地址为&p.


char const* ppp  和
char* const ppp 是不同的,一个指向的内容是个常量,一个指针不能改变(不能指向其它),看const后面,是*ppp为const还是ppp为const。

以上我的理解,没有常用C语言写程序,具体翻书为准。

#3


地址空间用sizeof,比如sizeof(int),sizeof(int *)

#4


你可以写个小程序还printf各个a,&a,p,&p,sizeof(a),sizeof(p)

#5


就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

这句话错了!
789是指针本身的地址,但是只能说指针指向"12345\0"这个字符串的首地址!
或者说789这地址值上的内存空间上存放着"12345\0"这个字符串!
789这个地址值和"12345\0"这个没有关系的!只是指针可以通过789这个地址值找到"12345\0"这个字符串的!

#6


引用 5 楼 max_min_ 的回复:
就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

这句话错了!
789是指针本身的地址,但是只能说指针指向"12345\0"这个字符串的首地址!
或者说789这地址值上的内存空间上存放着"12345\0"这个字符串!
789这个地址值和"12345\0"这个没有关系的!只是指针可以通过789这个地址值找到"12345\0"这个字符串的!

谢谢,这个有点糊涂

char const* ppp="12345";

这里 ppp是个指针没错吧?
ppp自己有个地址没错吧?假设是789
ppp指向哪里呢? 指向 "12345\0"的,也就是ppp这个指针变量的值是 "12345\0"的地址?
而这样的写法char const* ppp="12345"; 自动为指针ppp初始化了?
所谓指针的初始化也就是为指针赋值?





#7


引用 6 楼 u011718046 的回复:
Quote: 引用 5 楼 max_min_ 的回复:

就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

这句话错了!
789是指针本身的地址,但是只能说指针指向"12345\0"这个字符串的首地址!
或者说789这地址值上的内存空间上存放着"12345\0"这个字符串!
789这个地址值和"12345\0"这个没有关系的!只是指针可以通过789这个地址值找到"12345\0"这个字符串的!

谢谢,这个有点糊涂

char const* ppp="12345";

这里 ppp是个指针没错吧?
ppp自己有个地址没错吧?假设是789
ppp指向哪里呢? 指向 "12345\0"的,也就是ppp这个指针变量的值是 "12345\0"的地址?
而这样的写法char const* ppp="12345"; 自动为指针ppp初始化了?
所谓指针的初始化也就是为指针赋值?


char const* ppp="12345" ; //这句话的意思是把"12345"这个字符串的首地址赋值给了ppp这个指针,也就是说ppp它指向地址是"12345"这个字符串,
789是ppp本身的地址,也就说789这个地址的内存空间存放的内容是"12345"这个字符串的首地址!

#8


char const* ppp="12345";
这里ppp是一个指针?,好吧
ppp自身肯定存在于某个地址,假设是789,这个没错
那么如上申明,就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

常量字符串存储在常量区。一般的变量存储在栈上,而你自己分配内存的存在堆上

#9


  const char *pBuf = NULL;
00B83EB0  mov         dword ptr [ebp-18h],0  //pBuf是一个栈变量, 其存放地址是 epb-18h
                                             // []即相当于对地址epb-18h去引用.

  pBuf = "abcdefg";
00B83EB7  mov         dword ptr [ebp-18h],0C38124h  //0C38124h即存放串"abcdefg"的地址.
                                                    //把这个地址给了指针pBuf

如果楼主能理解这两句汇编代码, 那这个指针的问题也就理解了.


#10


引用 9 楼 xiaohuh421 的回复:

谢谢,我不懂汇编

#11


指针存放的就是一个地址(4字节),指针存放的地址表示字符串存放的起始位置。

#12


char const* ppp="12345";
这种情况,比较特殊,可以看作
staic char const pconst [] ="12345";
char const *ppp =pconst ;简化写法。
即同时定义了,一个匿名的全局字符常变量数组,和一个有名字的常量字符指针。
指针的值,是数组的首地址。
pconst 由于没有名字,所以不可直接访问,只有通过ppp才能访问。

#13


引用 楼主 u011718046 的回复:
我对于指针的理解是:
假设有指针P1,那么
P1
--------
123  456
如上123是P1自己的存放地址,456是P1指向的地址
这样对吗?


但是问题来了,如下
char const* ppp="12345";
这里ppp是一个指针?,好吧
ppp自身肯定存在于某个地址,假设是789,这个没错
那么如上申明,就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

或者说这里的char const* ppp 这个变量保存的不是地址,是一个字符串。
所以char const* 是一种特殊的指针,它并没有指向别的地址?

ppp是一个指针,占4个字节(指针的大小).假设起始地址是789.那么789,790,791,792这四个字节会存放着一些内容.假设是0x12345678.那么0x12345678这个地址开始,存放着“12345”

#14


const是指指针指向的内容(即0x12345678开始的内容)只读,即不可更改.

#15


"12345"
看作匿名的全局字符常变量数组。
或者看作匿名的局部静态字符常变量数组。

#16


char const* ppp="12345"; 这里会把字符串常量"12345"的地址赋给指针ppp

#17


char const* ppp="12345"
假设字符串12345加后面一个\0存放在起始地址0xff58中,
则ppp==0xff58   *ppp=='1'
ppp+1==0xff59   *(ppp+1)=='2'
ppp+2==0xff5a   *(ppp+2)=='3'
ppp+5==0xff5d   *(ppp+5)=='\0'==0
再加就超出没有意义了。
ppp的内容就是0xff58,ppp存放的地址空间编号也就是操作系统为某个内存单元的房间编号为&ppp,比如为0xff86什么的。

#18


学了汇编后就懂了

#19


从0xff86这个房间得到ppp的值0xff58,ppp是个指针,它的值是个地址,所以从0xff58这个地址的房间里找到字符'1',连续的地址下去就是'2','3','4','5','\0'。

#20


引用 18 楼 booirror 的回复:
学了汇编后就懂了

怎么学啊,学习C++,我只要装个VS.NET,或者g++ 就行了
汇编在哪里学啊?

#21


把内存想象成一座大楼,假设这大楼
这大楼全是标准间的宾馆
那房号就是内存地址
房卡就是指针
房间就是内存单元
房间里面的东西就是存放的对象

#22


引用 13 楼 sdu20112013 的回复:
ppp是一个指针,占4个字节(指针的大小).假设起始地址是789.那么789,790,791,792这四个字节会存放着一些内容.假设是0x12345678.那么0x12345678这个地址开始,存放着“12345”


我觉得#13同學sdu20112013理解有问题啊,32位系统中指针的大小通过sizeof(ppp)可知为4,就是4字节(4BYTE刚好是2的32次方bit),那么这4字节代表什么呢,代表的是ppp自身地址,比如说16进制的0X1234,这个地址位置在内存的栈区,其存储的内容789,是字符串常量“12345”的首地址,而789这个地址位置在内存的文字常量区,其存储的内容为字符串“12345”的第一位,那么790就指字符串的第二位,依此类推。 

#23


引用 22 楼 mylovezhyl 的回复:
Quote: 引用 13 楼 sdu20112013 的回复:

ppp是一个指针,占4个字节(指针的大小).假设起始地址是789.那么789,790,791,792这四个字节会存放着一些内容.假设是0x12345678.那么0x12345678这个地址开始,存放着“12345”


我觉得#13同學sdu20112013理解有问题啊,32位系统中指针的大小通过sizeof(ppp)可知为4,就是4字节(4BYTE刚好是2的32次方bit),那么这4字节代表什么呢,代表的是ppp自身地址,比如说16进制的0X1234,这个地址位置在内存的栈区,其存储的内容789,是字符串常量“12345”的首地址,而789这个地址位置在内存的文字常量区,其存储的内容为字符串“12345”的第一位,那么790就指字符串的第二位,依此类推。 

你看看LZ的描述。他的意思就是说假设789是指针本身的地址

#24


计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
但我又不得不承认:
 有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物;
 而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。
而我本人属前者。

这辈子不看内存地址和内存值;只画链表、指针示意图,画堆栈示意图,画各种示意图,甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗?本人深表怀疑!
这辈子不种麦不收麦不将麦粒拿去磨面;只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头,压面条,烤面包,……能从本质上理解面粉、理解面食吗?本人深表怀疑!!

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!

电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

十字链表交换任意两个节点C源代码(C指针应用终极挑战) http://download.csdn.net/detail/zhao4zhong1/5532495

#25


这个还真不是很懂

#26


引用 23 楼 sdu20112013 的回复:
你看看LZ的描述。他的意思就是说假设789是指针本身的地址


sorry,我理解错了,一个内存单元的存储大小为1个字节。

#1


int a;
.....
int* p1=&a;

p1是一个内存单元,这个单元的值是变量a的地址,至于p1本身的地址未知
如果想获得p1本身的地址,则使用
int** p2=&p1;获得,p2也是一个内存单元,也就是所谓的指针的指针

#2


比如0xff38 这个地址存放变量a的值456
int* p=&a
p==0xff38
*p==456
p自己的存放地址为&p.


char const* ppp  和
char* const ppp 是不同的,一个指向的内容是个常量,一个指针不能改变(不能指向其它),看const后面,是*ppp为const还是ppp为const。

以上我的理解,没有常用C语言写程序,具体翻书为准。

#3


地址空间用sizeof,比如sizeof(int),sizeof(int *)

#4


你可以写个小程序还printf各个a,&a,p,&p,sizeof(a),sizeof(p)

#5


就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

这句话错了!
789是指针本身的地址,但是只能说指针指向"12345\0"这个字符串的首地址!
或者说789这地址值上的内存空间上存放着"12345\0"这个字符串!
789这个地址值和"12345\0"这个没有关系的!只是指针可以通过789这个地址值找到"12345\0"这个字符串的!

#6


引用 5 楼 max_min_ 的回复:
就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

这句话错了!
789是指针本身的地址,但是只能说指针指向"12345\0"这个字符串的首地址!
或者说789这地址值上的内存空间上存放着"12345\0"这个字符串!
789这个地址值和"12345\0"这个没有关系的!只是指针可以通过789这个地址值找到"12345\0"这个字符串的!

谢谢,这个有点糊涂

char const* ppp="12345";

这里 ppp是个指针没错吧?
ppp自己有个地址没错吧?假设是789
ppp指向哪里呢? 指向 "12345\0"的,也就是ppp这个指针变量的值是 "12345\0"的地址?
而这样的写法char const* ppp="12345"; 自动为指针ppp初始化了?
所谓指针的初始化也就是为指针赋值?





#7


引用 6 楼 u011718046 的回复:
Quote: 引用 5 楼 max_min_ 的回复:

就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

这句话错了!
789是指针本身的地址,但是只能说指针指向"12345\0"这个字符串的首地址!
或者说789这地址值上的内存空间上存放着"12345\0"这个字符串!
789这个地址值和"12345\0"这个没有关系的!只是指针可以通过789这个地址值找到"12345\0"这个字符串的!

谢谢,这个有点糊涂

char const* ppp="12345";

这里 ppp是个指针没错吧?
ppp自己有个地址没错吧?假设是789
ppp指向哪里呢? 指向 "12345\0"的,也就是ppp这个指针变量的值是 "12345\0"的地址?
而这样的写法char const* ppp="12345"; 自动为指针ppp初始化了?
所谓指针的初始化也就是为指针赋值?


char const* ppp="12345" ; //这句话的意思是把"12345"这个字符串的首地址赋值给了ppp这个指针,也就是说ppp它指向地址是"12345"这个字符串,
789是ppp本身的地址,也就说789这个地址的内存空间存放的内容是"12345"这个字符串的首地址!

#8


char const* ppp="12345";
这里ppp是一个指针?,好吧
ppp自身肯定存在于某个地址,假设是789,这个没错
那么如上申明,就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

常量字符串存储在常量区。一般的变量存储在栈上,而你自己分配内存的存在堆上

#9


  const char *pBuf = NULL;
00B83EB0  mov         dword ptr [ebp-18h],0  //pBuf是一个栈变量, 其存放地址是 epb-18h
                                             // []即相当于对地址epb-18h去引用.

  pBuf = "abcdefg";
00B83EB7  mov         dword ptr [ebp-18h],0C38124h  //0C38124h即存放串"abcdefg"的地址.
                                                    //把这个地址给了指针pBuf

如果楼主能理解这两句汇编代码, 那这个指针的问题也就理解了.


#10


引用 9 楼 xiaohuh421 的回复:

谢谢,我不懂汇编

#11


指针存放的就是一个地址(4字节),指针存放的地址表示字符串存放的起始位置。

#12


char const* ppp="12345";
这种情况,比较特殊,可以看作
staic char const pconst [] ="12345";
char const *ppp =pconst ;简化写法。
即同时定义了,一个匿名的全局字符常变量数组,和一个有名字的常量字符指针。
指针的值,是数组的首地址。
pconst 由于没有名字,所以不可直接访问,只有通过ppp才能访问。

#13


引用 楼主 u011718046 的回复:
我对于指针的理解是:
假设有指针P1,那么
P1
--------
123  456
如上123是P1自己的存放地址,456是P1指向的地址
这样对吗?


但是问题来了,如下
char const* ppp="12345";
这里ppp是一个指针?,好吧
ppp自身肯定存在于某个地址,假设是789,这个没错
那么如上申明,就表示自789开始的那个地址空间总共6个字节保存了"12345\0" 呢?

或者说这里的char const* ppp 这个变量保存的不是地址,是一个字符串。
所以char const* 是一种特殊的指针,它并没有指向别的地址?

ppp是一个指针,占4个字节(指针的大小).假设起始地址是789.那么789,790,791,792这四个字节会存放着一些内容.假设是0x12345678.那么0x12345678这个地址开始,存放着“12345”

#14


const是指指针指向的内容(即0x12345678开始的内容)只读,即不可更改.

#15


"12345"
看作匿名的全局字符常变量数组。
或者看作匿名的局部静态字符常变量数组。

#16


char const* ppp="12345"; 这里会把字符串常量"12345"的地址赋给指针ppp

#17


char const* ppp="12345"
假设字符串12345加后面一个\0存放在起始地址0xff58中,
则ppp==0xff58   *ppp=='1'
ppp+1==0xff59   *(ppp+1)=='2'
ppp+2==0xff5a   *(ppp+2)=='3'
ppp+5==0xff5d   *(ppp+5)=='\0'==0
再加就超出没有意义了。
ppp的内容就是0xff58,ppp存放的地址空间编号也就是操作系统为某个内存单元的房间编号为&ppp,比如为0xff86什么的。

#18


学了汇编后就懂了

#19


从0xff86这个房间得到ppp的值0xff58,ppp是个指针,它的值是个地址,所以从0xff58这个地址的房间里找到字符'1',连续的地址下去就是'2','3','4','5','\0'。

#20


引用 18 楼 booirror 的回复:
学了汇编后就懂了

怎么学啊,学习C++,我只要装个VS.NET,或者g++ 就行了
汇编在哪里学啊?

#21


把内存想象成一座大楼,假设这大楼
这大楼全是标准间的宾馆
那房号就是内存地址
房卡就是指针
房间就是内存单元
房间里面的东西就是存放的对象

#22


引用 13 楼 sdu20112013 的回复:
ppp是一个指针,占4个字节(指针的大小).假设起始地址是789.那么789,790,791,792这四个字节会存放着一些内容.假设是0x12345678.那么0x12345678这个地址开始,存放着“12345”


我觉得#13同學sdu20112013理解有问题啊,32位系统中指针的大小通过sizeof(ppp)可知为4,就是4字节(4BYTE刚好是2的32次方bit),那么这4字节代表什么呢,代表的是ppp自身地址,比如说16进制的0X1234,这个地址位置在内存的栈区,其存储的内容789,是字符串常量“12345”的首地址,而789这个地址位置在内存的文字常量区,其存储的内容为字符串“12345”的第一位,那么790就指字符串的第二位,依此类推。 

#23


引用 22 楼 mylovezhyl 的回复:
Quote: 引用 13 楼 sdu20112013 的回复:

ppp是一个指针,占4个字节(指针的大小).假设起始地址是789.那么789,790,791,792这四个字节会存放着一些内容.假设是0x12345678.那么0x12345678这个地址开始,存放着“12345”


我觉得#13同學sdu20112013理解有问题啊,32位系统中指针的大小通过sizeof(ppp)可知为4,就是4字节(4BYTE刚好是2的32次方bit),那么这4字节代表什么呢,代表的是ppp自身地址,比如说16进制的0X1234,这个地址位置在内存的栈区,其存储的内容789,是字符串常量“12345”的首地址,而789这个地址位置在内存的文字常量区,其存储的内容为字符串“12345”的第一位,那么790就指字符串的第二位,依此类推。 

你看看LZ的描述。他的意思就是说假设789是指针本身的地址

#24


计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
但我又不得不承认:
 有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物;
 而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。
而我本人属前者。

这辈子不看内存地址和内存值;只画链表、指针示意图,画堆栈示意图,画各种示意图,甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗?本人深表怀疑!
这辈子不种麦不收麦不将麦粒拿去磨面;只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头,压面条,烤面包,……能从本质上理解面粉、理解面食吗?本人深表怀疑!!

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!

电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

十字链表交换任意两个节点C源代码(C指针应用终极挑战) http://download.csdn.net/detail/zhao4zhong1/5532495

#25


这个还真不是很懂

#26


引用 23 楼 sdu20112013 的回复:
你看看LZ的描述。他的意思就是说假设789是指针本身的地址


sorry,我理解错了,一个内存单元的存储大小为1个字节。