char *S,*P; *S++=*P; 请问,怎么理解? 5

 我来答
L_o_o_n_i_e
2011-03-29 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5232万
展开全部
char *S,*P; // 声明 S 是 char 指针,P 是 char 指针
*S++=*P;
// 理解成两步,第一步P指向的一个char值赋给S,S指针指向单元地址增1
*S = *P; S=S+1;
这步运算前,应当要对*S,*P 初始化,否则不能运算。我们可以写成:
char *S="AB",*P="ab";
*S = *P;
printf("%s\n",S);
S=S+1;
printf("%s\n",S);
-----------
你可以对比
char *S="AB",*P="ab";
*S++=*P;
printf("%s\n",S);
的结果。
追问
请问,为什么在运行时报错!
追答
*S,*P 没有初始化,就要报错。
-------------
char *S="AB",*P="ab";
*S = *P;
printf("%s\n",S);
S=S+1;
printf("%s\n",S);
得:
aB
B
-----------------
char *S="AB",*P="ab";
*S++=*P;
printf("%s\n",S);

B
------------------
VC++ 6.0 编译器。
匿名用户
2011-04-01
展开全部
比如说,定义了ch[2][5],其实就相当于定义了ch[10]的空间,那么对于定义ch[10],其实也可以通过访问ch[1][4]来访问ch[9]这个数组成员。

两者在内存中是等价的,完全可以通过以上两种不同的方式来访问。
ch[0][0] ch[0]
ch[0][1] ch[1]
ch[0][2] ch[2]
ch[0][3] ch[3]
ch[0][4] ch[4]
ch[1][0] ch[5]
... ...
ch[1][4] ch[9]

而关于指针P为什么可以访问,对于数组和指针,两者在内存分配的地点上有些许差别,但都起指向的作用。因此初学者或者甚至是专业程序员都不用考虑太多两者的类型问题。
另外,团IDC网上有许多产品团购,便宜有口碑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
血色_蒲公英
2011-03-29 · 超过16用户采纳过TA的回答
知道答主
回答量:186
采纳率:0%
帮助的人:42.2万
展开全部
这是定义字符型指针,后面那个是指针S所指的地址的下一个地址和指针P指向同一个地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虚心的我们
2011-03-29
知道答主
回答量:41
采纳率:0%
帮助的人:14.1万
展开全部
定义了两个指向字符的指针S,P。S++所指的内容为P所指的内容。S++可以理解为:S指向一个字符,S中存储那个字符的地址,S++即这个地址的下一个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式