怎样在网站做推广,wordpress 不显示顶部,婚纱摄影介绍,开电商有哪些步骤目录
1.数组指针
2.指针数组
执行结果
底层分析 1.数组指针
从语文的角度理解,数组修饰指针.因此数组指针是指针
例如以下代码
#include stdio.h
int main()
{char a[5] { ABCDE };return 0;}
其中a就是数组指针,因为数…目录
1.数组指针
2.指针数组
执行结果
底层分析 1.数组指针
从语文的角度理解,数组修饰指针.因此数组指针是指针
例如以下代码
#include stdio.h
int main()
{char a[5] { ABCDE };return 0;}
其中a就是数组指针,因为数组名代表数组首元素的地址,该数组名指向数组的首元素A
2.指针数组
从语文的角度理解,指针修饰数组.因此指针数组是数组
由指针数组的定义,如果存储一级指针,则就要定义类型为二级指针的数组来存储
例如以下代码
#include stdio.h
int main()
{char* a[5] { ABC,DEF,GHI,JKL,MNO };return 0;}
下断点至return 0;,打开内存窗口,输入a
发现存储的元素的值是地址0x00e47bcc,0x00e47bd0,0x00e47bd4,0x00e47bd8,0x00e47bdc
相邻两个值都差4 地址栏输入0x00e47bcc,跳转到的是存储字符串的内存空间 打印指针数组指向的字符串
#include stdio.h
int main()
{char* a[5] { ABC,DEF,GHI,JKL,MNO };for (int i0;i5;i)printf(%s , a[i]);return 0;
}
注意:打印char*类型的数据直接就是%s后面跟char*类型的首元素地址
执行结果 底层分析
调试模式下,转到反汇编 只看重点部分 char* a[5] { ABC,DEF,GHI,JKL,MNO };
00E44A76 mov dword ptr [a],offset string ABC (0E47BCCh)
00E44A7D mov dword ptr [ebp-14h],offset string DEF (0E47BD0h)
00E44A84 mov dword ptr [ebp-10h],offset string GHI (0E47BD4h)
00E44A8B mov dword ptr [ebp-0Ch],offset string JKL (0E47BD8h)
00E44A92 mov dword ptr [ebp-8],offset string MNO (0E47BDCh)
注意到offset string,是将字符串的地址存储到数组中,因此顾名思义,为指针数组