char char* 的困惑

char  c="c";

//定义一个字符变量c ,value=c,且在内存中是以AscII 码方式存储,也就是存的是一个整数。

char * c="what";

//用字符指针定义一个c,且初始化为“what',此时 cout<< c .结果是what.

char* str[]={"what","is","your","name"};

//此时 cout<< str,结果是一个地址。str[0] 的值是what ,str[1]的值是is.请看如下代码:

#include <iostream>
using namespace std;
int main()
{
char* c="what";
char* string[]={"I","love","China!"};
char ** str = string;
cout<<string[0]<<endl;
cout <<string[1];
cout <<string<<endl;
cout<<*(*str+12)<<endl;
cout<< c << endl;
cout<<*c<<*(c+1)<<endl;
return 0;
}
 *c 值w,*(c+1)值h,cout<< c,输出的结果为what.

string是一个数组,里面存放的是地址,分别指向i,love,China!.所以string[0]值为what。但是如果cout<<string,其输出的是string指针数组的基地址。

str是指针的指针,指向string数组的基地址,所以string str是相等的,都指向数组 string 的基地址。

对str引领的时候,*str值I,*(str+1)值love.

但是**str 指向的是string[]指针数组所指向字符串的存储空间。其存储的大概是“I love China”

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值