第二次作业
2018-04-07 21:00 魏鹏5班 阅读(260) 评论(0) 编辑 收藏 举报一、学习内容总结
1.指针事实上是一种数据类型,和int 基本类型一样。指针也是一种变量,占有内存空间,保存的是内存地址。
2.指针变量的加减运算并不是简单的加上或减去一个整数,而是跟指针指向的数据类型有关。
3.两个指针变量可以相减。若是两个指针变量指向统一个数组中的某个元素,那么相减的成效就是两个指针之间的元素个数。
4.数组参数 等效的指针参数
一维数组 char a[30] 指针 char*
二维数组 char a[10][30] 数组的指针 char(*a)[30]
二、在课堂或课后编程学习遇到的问题及解决过程
问题一:一直不明白&a在指针中是这么操作的。
问题一的解决方法:看了书才知道,是先进行&a运行运算,得到了a的地址,在去进行的运算,也就是说,&a与a等价。
问题二:对于指针中的加加、减减。
问题二的解决方法:(p--)先对p进行运算,再让p自减。
(++p)先让p自加,再做运算。
(--p)先让p自减,再做运算。
问题三:不理解a+1和(a+1)的值为什么一样。
问题三的解决方法:虽然是内容与地址的差别,,但a+1是二维数组中序号为一的首地址,而*(a+1)就是的a[1],也是地址,指向a[1][0],所以是一样的。
1.完成PTA(指针字符串查找字符程序),粘贴代码,将输出截图(只截带结果的小图即可)。
#include<stdio.h>
#include<stdlib.h>
main()
{
char a[100],ch,*p;
p=a;
int count=0,i;
gets(a);
ch=getchar();
for(;*p!='\0';*p++)
{
if(*p==ch)
count++;
else continue;
}
printf("%d\n",count);
}
2.课后自行完成以二维数组形式对5个字符串进行排序(可冒泡可选择排序)
#include<stdio.h>
#include<string.h>
#define N 5
int main()
{
char ptr[N][80]={ "to","happy","birthday","you"};
char *p[N];
char *temp;
int i,j;
for(i=0;i<N;i++)
p[i]=ptr[i];
for(i=0;i<N-1;i++)
for(j=i;j<N-1;j++)
if(strcmp(p[j],p[j+1])>0)
{
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
for(i=0;i<N;i++)
puts(p[i]);
}
四、附加内容