原创 有效利用指针数组,节省存储空间

2008-12-3 09:14 3057 4 4 分类: 工程师职场

如题所述,结合代码:


 #include<iostream.h>
#include<stdio.h>
void main()
{
 


 char name[5][20]={"xiongwei","luanjiyun","luanluqing","zhangyaping","xiongfuchang"};


//此时定义一个5行20列的字符型数组,即使未用,也开辟了内存空间。
 char *g=name[0];                             //定义一指向字符型指针,并初始化  
 cout<<"add address:"<<&g<<endl; 


 g=name[1];                                    
 cout<<"add address:"<<&g<<endl;
 
 g=name[2];                                    
 cout<<"add address:"<<g<<endl;


 g=name[3];                                    
 cout<<"add address:"<<g<<endl;


 g=name[4];                                    
 cout<<"add address:"<<g<<endl;


//可以比较以上输出的不同,前是指针的地址,后是指针所指向的字符串



 char *name1[5]={"xiongwei","luanjiyun","luanluqing","zhangyaping","xiongfuchang"};


//为了节省空间,可以定义一指针数组,分别指向每个字符串的首地址 



 for(int i="0";i<5;i++)
  cout<<"string#"<<(i+1)<<" is "<<name1<<endl;                       


//或cout<<"string#"<<(i+1)<<" is "<<*(name1+i)<<endl;  


//而 cout<<"string#"<<(i+1)<<" is "<<name1+i<<endl; 输出为每个指针的存放地址, 并非字符串的首地址


//cout<<"string#"<<(i+1)<<" is "<<**(name1+i)<<endl;  //不难得出此时输出为每个字符串的首个字符



return;
}


简单的说原来为:


————————————————————


————————————————————


————————————————————


————————————————————


————————————————————


这是内在空间的分配图,用过指针数组则为:


——————


————


————————


————


——————————


只是表达的意思,个数不一定与代码中的一致。


思考下,如果想看到每个字符串的首地址如何写代码?

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条