如题所述,结合代码:
#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;
}
简单的说原来为:
————————————————————
————————————————————
————————————————————
————————————————————
————————————————————
这是内在空间的分配图,用过指针数组则为:
——————
————
————————
————
——————————
只是表达的意思,个数不一定与代码中的一致。
思考下,如果想看到每个字符串的首地址如何写代码?
文章评论(0条评论)
登录后参与讨论