数组与指针(错题)

错题:

  1. 数组名表示地址常量,不能对其进行赋值。赋值前后要看类型是否一样。a[10],a是地址常量。
  2. int *p,m=5,n;如果scanf(“%d”,&n);*p=n;这样赋值是不对的,这里并没有给指针p指向,不能将变量n的值赋给p所指向的单元。正确的赋值:p=&n;*p=m;(错了3次)
  3. char *a=“china”;等价于char *a;*a=“china”;是不对的,赋值语句中的 *a表示a所指向位置的值,因此 *a="china"是不对的。char *a=“china”;等价于char *a;a=“china”;才对。(错了2次)
  4. char s[10];则s++不能表示s[1];数组名s是一个地址常量不能进行自增自减操作,正确表示s[1]的表达有s+1、&s[0]+1、&s[1]。如果硬要进行自增自减操作,则需要多2步操作*a=s;a++;这样使得指针变量a指向数组s的起始位置,因此自增自减才有意义。(错了4次)
  5. int(*p)[4]; 是一个指针,它指向一个含有4个整形元素的一维数组。
  6. 已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是 p=max;必须将函数名赋给指针变量。像*p=max(a,b)这样的赋值方法是错的。
  7. 当main函数带有参数时,传给形参的值只能从命令行中得到。
  8. 指针变量能够赋常量值或变量地址值。
  9. 字符串“ab\n\012\"”的长度为6,“a b \n \012 \\ \"" \012八进制表示的字符\\反斜线\"双引号。
  10. 输入aa bb回车cc dd回车 scanf(“%s%s”,a1,a2);gets(a3);gets(a4);得到aa回车bb回车回车cc dd.
    是因为gets(a3)把回车吃掉了!
  11. scanf函数读入字符串时以空格、回车或Tab键作为输入结束,而gets函数读入字符串时只以回车作为结束。AhaMA Aha scanf读入时到空格就结束了!
  12. a[max],a[min] 初始值 max=min=0;
  13. b[i]=-999 看清题意!
  14. i<N-1还是i<N,看清题意!
  15. 递归类
//功能:将一个整数逆序放到一个字符数组中。483-->"384"
void convert(char *a,int n){
int i;
if((i=n/10)!=0) convert(a+1,i);
*a=(n%10)+'0';
}
//功能:求数组中的最大值及下标。
void findmax(int *a,int n,int i,int *pk){
   if(i<n){
     if(a[i]>a[*pk]) *pk=i;
     findmax(a,n,i+1,pk);
   }
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值