一个关于指针数组的例子

废话不多说,先上原始代码:、、、


#include <iostream>
 
using namespace std;
const int MAX = 4;
 
int main ()
{
 const char *names[MAX] = {
                   "Zara Ali",
                   "Hina Ali",
                   "Nuha Ali",
                   "Sara Ali",
   };

   for (int i = 0; i < MAX; i++)
   {
      cout << "Value of names[" << i << "] = ";
      cout << names[i] << endl;
   }
   return 0;
}


运行结果:

Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali

此处的name[ i ]是各个字符串的地址。给到cout里,直接输出里面的数据。


修改一下代码----version_1:

#include <iostream>

using namespace std;
const int MAX = 4;

int main ()
{
	const char *names[MAX] = {
		"Zara Ali",
		"Hina Ali",
		"Nuha Ali",
		"Sara Ali",
	};

	for (int i = 0; i < MAX; i++)
	{
		cout << "Value of names[" << i << "] = ";
		cout << *names[i] << endl;
	}
	return 0;
}

运行结果:
Value of names[0] = Z
Value of names[1] = H
Value of names[2] = N
Value of names[3] = S

此处的*name[ i ]是name[ i ]地址中的值了。因为这个地址是字符串的首地址,给到cout里,就输出字符串的第一个字符了。


修改一下代码----version_2

#include <iostream>

using namespace std;
const int MAX = 4;

int main ()
{
	const char *names[MAX] = {
		"Zara Ali",
		"Hina Ali",
		"Nuha Ali",
		"Sara Ali",
	};

	for (int i = 0; i < MAX; i++)
	{
		cout << "Value of names[" << i << "] = ";
		cout << names[i]+1 << endl;
	}
	return 0;
}

运行结果:

Value of names[0] = ara Ali
Value of names[1] = ina Ali
Value of names[2] = uha Ali
Value of names[3] = ara Ali

此处的name[ i ]+1是按name[ i ]的数据类型,在地址上移动其单位尺寸的距离。移动到了字符串的第二个字符位置。给到cout里,直接输出里面的数据,以此时的位置作为首地址,输出到字符串结束。


修改一下代码----version_3

#include <iostream>

using namespace std;
const int MAX = 4;

int main ()
{
	const char *names[MAX] = {
		"Zara Ali",
		"Hina Ali",
		"Nuha Ali",
		"Sara Ali",
	};

	for (int i = 0; i < MAX; i++)
	{
		cout << "Value of names[" << i << "] = ";
		cout << *(names[i]+1) << endl;
	}
	return 0;
}

运行结果:

Value of names[0] = a
Value of names[1] = i
Value of names[2] = u
Value of names[3] = a

此处同理,因为移动到第二个字符的位置了,而使用的表达式又是数据(而非地址),就输出各字符串的第二位字符了。



翻了一下C++的教程:

给cout发个地址,就能自动把地址里面的字符串数据输出出来、、、

有图为证





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值