c语言实验七指针,c语言教材 第七章 指针 实验

41528d3028836879cd698677c3999917.gifc语言教材 第七章 指针 实验

1 第七章 指针 第一部分 知识训练 【知识要点】 1. 地址与指针指针变量的概念:用一个变量专门来存放另一个变量的地址。 2. 指向变量的指针变量 指针变量的形式:基类型 *指针变量名;一个函数的返回值可以是一个函数。 【典型习题与解析】 5. char * const p; char const * pconst char *p上述三个有什么区别? 【解析】 char * const p; //常量指针,p的值不可以修改; char const * p;//指向常量的指针,指向的常量值不可以改; const char *p; //和char const *p。 6. main() {int a[5]={1,2,3,4,5};int *ptr=(int *)(printf(“%d,%d“,*(a+1),*(ptr-1));}输出结果是什么?【解析】2答案:输出:2,5*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5。则ptr实际是而指针加1要根据指针类型加上一定的 值,不同类型的指针+1之后增加的大小不同。 2) a是长度为5的int数组指针,所以要加 5*sizeof(int),所以ptr实际是a[5],但是prt与( 1) 定义一个指向变量k的指针变量p的语句是 。 2) 通过指针变量,将数值6赋值给k的语句是 。 3) 定义一个可以指向指针变量p的变量pp的语句是 。 4) 通过赋值语句将pp指向指针变量p的语句是 。 5) 通过指向指针的变量pp,将k的值增加一倍的语句是 。 4. 当定义某函数时,有一个形参被说明成int *类型,那么可以与之结合的实参类型可 以是 、 等。 5. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入 的字符串为:556,则输出十进制整数366。请填空。 #include main( ) { 3 char *p,s[6]; int n; p=s; gets(p); n=*p-‵0‵;while( != \0 ) n=n*8+*p-‵0‵; printf(“%d \n“,n); } 二、选择题 1.变量的指针,其含义是指该变量的( )。A)值 B)地址 C)名 D)一个标志 2.下面程序的运行结果是( )。#include #include main(){char *s1=“AbDeG“;char *s2=“AbdEg“;s1+=2;s2+=2;printf(“%d\n“,strcmp(s1,s2));}A)正数 B)负数 C)零 D)不确定的值 3.若有以下定义,则对a数组元素的正确引用是( )。 int a[5],*p=a; A)* A)元素a[5]的地址 B)元素a[5]的值 C)元素a[6]的地址 D)元素a[6]的值4 5. 以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行 符)。 void Delblank(char *s) { int i,t; char c[80]; for(i=0,t=0; ① ;i++) if(!isspace( ② ))c[t++]=s[i]; c[t]=‘\0’; strcpy(s,c); } ① A) s[i] B) !s[i] C) s[i]=‘\0’ D) s[i]==‘\0’ ② A) s+i B) *c[i] C) *(s+i)=‘\0’ D) *(s+i) 6. 以下conj函数的功能是将两个字符串s和t连接起来。 char *conj(char *s,char *t) { char *p=s; while(*s) ① ; while(*t) { *s= ② ;s++;t++; } *s=‘\0’;③ ; } ① A) s-- B) s++ C) s D) *s ② A) *t B) t C) t-- D) *t++ ③ A) return s B) return t C) return p D) return p-t 7. 下列程序的输出结果是( )。 #include 5 main() { int **k,*a,b=100; a= k= printf(“%d\n”,**k); } A) 运行出错 B) 100 C) a的地址 D) b的地址 8. 若定义了以下函数: void f(……) { …… p=(double *)malloc(10*sizeof(double)); …… } p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的 正确定义应当是( )。 A) double *p B) float **p C) double **p D) float *p 三、编程题 1. 编写一个程序,将用户输入的字符串中的所有数字提取出来。 2. 通过指针处理下面的问题:利用随机函数模拟产生 300 个 1~12 月出生的人数,统 计各月所占的出生率。 【练习题参考答案】 一、填空题 1. 首地址 2. 0 3. 1)int *p= 2)*p=6; 3)int **pp; 4)pp= 5)(**pp)*=2; 4. 整型数组名、指向整型数据的指针值 5. *(p++) 二、选择题 1. B 2. B 3. D 4. A 5. BD 6. BAC 7. B 8. C 三、编程题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值