C++中int与char指针数组、数组指针差别

我们首先弄清楚指针数组与数组指针的概念。

指针数组:指针数组是一个数组,只不过数组里面元素全是指针

	int* p[3];
	int  num[3]={1,2,3};
	for (int i = 0; i < 3; i++)
	{
		p[i]=&num[i];
		cout<<p[i]<<endl;
	}

 这里的p[3]就是指针数组,里面存储三个指向int型的指针。

数组指针:数组指针是一个指针,指针指向某个数组的首地址

	int num[3]={1,2,3};
	int *p=num;
	cout<<"数组中元素的地址:"<<endl;
	for (int i = 0; i < 3; i++)
	{
		cout<<&num[i]<<endl;
	}
	cout<<"指针p的地址:"<<p<<endl;

 上面展示的都是int型指针数组与数组指针,那char型与其又有何区别呢?

1、char型指针数组

	char* p[5];   
	char  str[5]={'a','b','c','d','\0'};   //'\0'为空字符
	for (int i = 0; i < 4; i++)
	{
		p[i]=&str[i];
		cout<<p[i]<<endl;
	}

         有没有发现不一样的地方?本来应该打印str[i]的地址却打印出字符。这里是因为系统调用不同于int型指针的函数去输出char型指针(具体的俺也不太懂)。总之就是将某个字符的地址赋值给char* p,再去输出p时,指针p会一直往后偏移获取char型数据并输出,直到读取到空字符‘\0’为止。

2、char型数组指针

	char str[5]={'a','b','c','d','\0'};
	char*p=str;
	cout<<p<<endl;

 将char数组首地址赋值给p,再打印p,直接输出char数组里面所有元素,符合我们上面得结论。

3、char型指针的应用

        之前我们定义一个字符串变量无非有两种方式,char[]或string。现在我们知道char* p会直接搜索后面的字符并输出,那我们可不可以通过指针p来保存字符串呢?

	char* str[3]={"abcd","1234","+-*/"};
	for (int i = 0; i < 3; i++)
	{
		cout<<str[i]<<endl;
	}

这一定是int型数据未曾设想的道路,我们来看看结果:              

 结果证明了其可行性,也再次证明了上面的结论。

 如有错误的地方欢迎指针交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值