今日大连电影院影讯:C语言题目 指针 帮我讲解一下谢啦

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 17:43:37
恩就是
# include<stdio.h>
# include<conio.h>
char *g1,*g2,*g3,*g4,*g5;
char Games[] = {'G','A','M','E','S'};
main()
{
clrscr();
g5 = g4 = Games;
++g4;
g3 = &Games[4];
g2 = g5 + 2;
g1 = &Games[3] - 3;
printf("%c\t%c\t%c\t%c\t%c",*g1,*g2,*g3,*g4,*g5);
getch();
return();
}

为什么答案是
G M S A G

一直就不太明白指针 谁仔细讲一下每一句都做了什么
谢谢啦

就是这个答案
g5 = g4 = Games; //g4,g5都指向鼠族的开头 g5是G
++g4; //g4的地址加1,所以 *g4就是A
g3 = &Games[4]; //g3指向数组的最后一元素,所以是S
g2 = g5 + 2; //g2指向的是从头数第3个,所以是M
g1 = &Games[3] - 3; //g1指向第四个元素再往前数3个就是G
所以就出现的答案

指针用处就大了,字符串就是指针,如果你需要一个非常大的字符串,那么通常会用malloc分配一个空间存放。

另外使用C++的多态性和虚函数,可以实现很灵活的功能,这个属于深入编程内容,适用多态性和虚函数必须要使用指针。

不行了,下面举一例
main()
{char *cp[6]={"red", "green", "blue", "white" , "yellow", "black" };
int i,j,k;
char *temp;
for(i=0;i<6;i++)
{k=i;
for(j=i+1;j<6;j++)
if(strcmp(cp[j],cp[k])<0) k=j;
if(k!=i)
{temp=cp[i];cp[i]=cp[k];cp[k]=temp;}
}
for(i=0;i<6; i++)
printf("\n%s",cp[i]); }

指针很有用的,其实指针就是地址.指针变量是个特殊变量,里面存放的是指针,也就是地址.
当你学过数据结构以后,就会知道用处了.
在C中,调用函数是用值传递的,所以无法返回变量.举个例子,在C中,如果要交换两数,如果不用指针怎么实现啊.没有办法实现.用指针可以这样.
void swap( int *x ,int *y)
{
int temp ;
temp = *x;
*x=*y;
*y=temp

}

指针是C的精华,慢慢体会吧.