C语言实验六函数思考题,C语言实验六实验报告——指针

#includeint cmp(char *p1,char *p2) /* 字符串比较函数*/

{

int i=0;

while (*(p1+i)==*(p2+i))

if (*(p1+i++)==\0) return 0; /* 这里是先判断*(p1+i)==\0,然后再是i++ */

return (*(p1+i)-*(p2+i));

}

void sort(char *a[3]) /*排序函数*/

{

char *temp;

int i,j;

for(i=0;i<3-1;i++)/* 选择排序*/

for(j=i+1;j<3;j++)

if(cmp(a[i],a[j])>0)

{temp=a[i];

a[i]=a[j];

a[j]=temp;}

}

void main()

{

int i;

char s[3][81],*p[3];/* 设定每个字符串不超过字节*/

printf("请输入3个字符串:\n");

for(i=0;i<3;i++)

{

gets(s[i]);

p[i]=s[i];

}

sort(p);

printf("字符串从小到大排序为:\n");

for(i=0;i<3;i++)

printf("%s\n",p[i]);

}

五、 思考题或实验感想

小结函数指针、数组指针、字符串指针的使用。

对于指针的使用,最重要的是搞清楚函数指针、数组指针和字符串指针的概念,不能混乱起来。

函数指针变量指向一个函数,然后通过该指针变量调用此函数。函数指针中,函数名代表该函数的入口地址。函数指针只能指向函数的入口而不能指向函数中的某一条指令处,因此不能用*(p+1)表示函数的下一条指令。

数组元素的指针就是数组元素的地址。C语言中规定数组名代表数组中首元素的地址,所以p=&a[0]和p=a等价。p+i,a+i就是a[i]的地址,或者指向数组的第i个元素。*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。指向数组的指针变量可以带有下标,如p[i]与*(p+i)等价。

字符串指针实际上是把字符串的第一个字符赋给指针变量。指针变量只能指向一个字符变量或其他字符型数据,不能同时指向多个字符数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值