喜欢FreeBSD

在FreeBSD中记下的

  山阳博客 :: 联系 :: 聚合  :: 登录
  79 Posts :: 1 Stories :: 8 Comments :: 0 Trackbacks

留言簿(0)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

查看文章  
char (*p)[10] 与 char p[10]
2008-06-17 16:10
1、char p[10]
p是数组类型。它指代数组。属于char [10]类型,(不是char *类型,和指针不要简单的混为一谈哦)。
2、char (*p)[10]
p是指向一个char [10]型数组的指针。因此,若有char q[10],则p是指向q的指针。因此,有p=&q。
注:p=q 报错。因为p是指向数组的指针类型(指向 char [10]类型的指针 ----char (*)[10]),而q是数组类型(char [10]),类型明显不符。因此用p=&q。(对比理解:int a=5;int *pa;pa=a;(error)pa=&a;(right))。
例子:
#include "stdafx.h"
#include "iostream"
using namespace std;

int main()
{
char (*p)[10];
char q[10]="hello,guy";
p=&q;
cout<<sizeof(p)<<" "<<sizeof(q)<<endl;    
cout<<q<<endl;
cout<<p<<endl;
cout<<*p<<endl;
cout<<*q<<endl;
cout<<**p<<endl;
return 0;
}
***********************************************
4 10                      //sizeof(q):sizeof(char)*10
hello,guy               //q指代的是整个数组,因为q是数组类型,不是指针类型
0012FF70             //p指向数组,p中的数据是数组的首地址。
hello,guy               //*p即是q(p=&q)
h                           //*q,似乎比较特殊(有点说不清了,呵呵),是数组第一个元素。
h                           //**p即是*q。
Press any key to continue
posted on 2008-07-08 13:31 hifreebsd@tom.com的博客 阅读(162) 评论(0)  编辑 收藏

Feedback

标题  
姓名  
主页
内容   
请输入验证码:
*
  登录  使用高级评论  Top 订阅回复  取消订阅
[使用Ctrl+Enter键可以直接提交]