九大天使和九大堕天使:关于指针的问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 10:04:12
一:*p[4]和(*p)[4]一个是指针数组,一个是向量指针。请问用的时候有什么区别啊?有对比比较明显的列子吗?
二:a[3][4]这一数组,在定义向量指针的时候是不是(*p)[3]表示行向量,(*p)[4]表示列向量,这两种定义都可以运用吗?
三:字符串指针里面*p="abcd efg",p的值是什么呢?就是下面的这个程序让我搞不懂其中的意思是什么
......
main()
{
char *t="abcd efg";
char *s=" ";
char *t1=t,*s1=s;

while((*t)!='\0')
{
*s=*t;
s++;
t++;
}
*s='\0';
printf("%s\n%s\n",s1,t1);
}
意思是说把*t复制到*s里,s++和t++是什么意思?
*s=*t和*s=t有什么不一样啊?

第一个问题,我没看太明白.还有没有那么弄的,对不对不说,这样的代码是很难读的,是编程人不提倡的..
第二个问题中,前一个是可以用的,后面的不行.我运行了,可是是个随机数吧...
第三个问题,这里的s和t都是指针,那指针加减运算都是它所指向的地址的加减,那s++和 t++,就是让指针指向下个单位.例如:char *t="abcd efg"; 此时t指向的是'a'的地址,那你t++,之后t 就指向b这个字符了.
还有:*s=*t和*s=t是不一样的,前者是:把t指的地址的单元给s所指向地址单元.而后者是把t所指向的地址给了s所指向地址里的值.

不知道说的你明白了吗?挺不好说的,,哈哈 要是不明白的话可以QQ我:115088917.
还有不要研究一些希奇古怪的东西,把常用的指针用法搞懂就可以,即使那些古怪的东西是对的,你也明白,你在程序上用了,可是别人不懂,你怎么和别人交流啊.这是不提倡的,代码一定要易读,要不还要注释干什么啊...