C++字符指针及字符数组

1.在cout及多数C++表达式中,char数组名,指向char类型的指针以及用引号括起的字符串常量,都被解释为字符串第一个字符的地址

	char food[20] = "carrots";//字符数组初始化 	
	cout<<food<<" at "<<(int*)food<<endl;
 	char *q = food;
	cout<<q<<" at "<<(int*)food<<endl;
	cout<<"This is const string variable."<<endl;
     结果: 

            


       cout对象认为char的地址为字符串的地址,因此它打印地址处的字符,然后再打印后面的字符,直至遇到空字符('\0')位置。

	char ch1 = 'h';
	cout<<"ch1= "<<ch1<<endl;
	cout<<"*(&ch1)= "<<*(&ch1)<<endl;
	//cout将char指针当做字符串的地址 
	cout<<"(&ch1)= "<<(&ch1)<<endl;

      结果:

              

       提示:最后的(&ch1)=h?/  的结果是不确定的,与内存数据有关。

   2.字符数组赋值

      1)初始化赋值

      2)利用strcpy或strncpy赋值

	char food[20] = "carrots";//字符数组初始化
	strcpy(food,"chicken");//字符数组赋值(一) 
	//当copy的字符个数大于目标数组长度时,将出现不会再最后添加'\0' 
	strncpy(food,"This is a demo  that moon!",40);//字符数组赋值(二) 

      Tips:应使用strcpy和strncpy来将字符串赋给数组。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值