查看文章
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