字符指针与数组指针的区别

一,字符指针:

         用字符指针指向一个字符串。可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。

void  main()
{
	char *string="I love China!";
	printf("%s\n", string);
}
在这里,我们没有定义字符数组,而是在程序中定义了一个字符指针变量 string ,用字符串常量 "I love China!" ,对它进行初始化。

C++对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来才存放该字符串常量。对字符指针变量初始化,实际上是把字符串第1个元素的地址(即存放字符串的字符数组的首元素地址)赋给string有人认为string是一个字符串变量,以为在定义时把"I love China!"这几个字符赋给该字符串变量,这是不对的!!

          实际上,char *string="I love China!"; 等价于:

                        char  *string

                        string= “I love China!”;

       可以看到,string被定义为一个指针变量,指向字符型数据,请注意它只是指向了一个字符变量或其他字符类型数据,不能同时指向多个字符数据,更不是把“I love China!”这些字符存放到string中(指针变量只能存放地址),也不是把字符串赋给*string只是把“I love China!”的第一个字符的地址赋给指针变量string

    对于字符型指针char*值的输出实际上是输出从该字符指针所指位置开始直到串尾结束符\0字符为止的那一个字符串,并且直接用cout<<p;就可以输出整个字符串,例如:

         char s[21];
	char *ps=s;               
	for (int i=0; i<20; i++)
		s[i]='A'+i;
	s[20]='\0';                      
	ps++;                            
	cout<<"ps="<<ps<<endl;

      输出即为整个从A到T的字符串。

     二,数组指针:

        对于上列中,若为数组指针,例如:

	int a[10]={0,1,2,3,4};
	int *p=a;
	cout<<p<<endl;
则输出的p为数组的首地址。

           



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值