10186|49

2804

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

05.10【每日一问】C语言问题 [复制链接]

由于今天和chunyang临时换了班,准备的不充分,请坛友多见谅!~

先来看一个指针的问题:
对于char *p[SIZE]和char (*p)[SIZE]这两种定义有什么区别吗?

上面的问题应该很简单吧,只是让大家能巩固基础。

printf("%f\n", 10 / 3);大家觉得输出应该是什么?


最新回复

看来在格式转换时问题真的不少啊。  详情 回复 发表于 2011-5-19 18:12

赞赏

2

查看全部赞赏

点赞 关注
个人签名QQ:1625345502
 
 

回复
举报

8

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
LZ这么负责
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

板凳
 
char *p[SIZE]和char (*p)[SIZE]
晕了 我竟然忘记了  翻书
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

4
 
,指针数组,数组指针
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

5
 
指针数组,就是有一组指针,这些指针指向整形变量.


数组指针,就是一个指针,指向一个数组了,而数组是整形的
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

6
 
黄老大,,,,,,,
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

7
 
第一个定义一个数组,这个数组中的元素都是指向整形变量的指针
第二个定义一个数组,这个数组中的元素都是整形变量,数组的首地址是*P,也就是说P是数组的第一个元素
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

8
 
镭公来了,,,
 
 
 

回复

210

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 7楼 leang521 、jxb01033016的 帖子

char *p[SIZE]和char (*p)[SIZE]这哪有整形类型?
 
 
 

回复

473

帖子

0

TA的资源

纯净的硅(高级)

10
 
char *p[SIZE]是一个由返回字符型数据的指针所组成的数组
char (*p)[SIZE]是一个指向由字符型数据组成的数组的指针
printf("%f\n", 10 / 3);应该是3.333333吧
对scanf printf还真不会

赞赏

1

查看全部赞赏

 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

11
 
一、数组指针

1、数组指针--指向数组的指针
2、声明:

int (* ptr)[100] = NULL; //声明指向数组的指针,数组内有100个int元素
char (* ptr1)[10] = NULL;


3、访问数组指针指向数组的元素
   (* ptr);// 访问第一i个元素
    或者 *(*ptr+i)
   
4、数组指针的使用
  int a[100];
  正确的赋值方式:
   ptr = &a;//
   或者 ptr = (int (*)[100])a;
  错误的赋值方式:ptr=a;
   因为:数组的名字会被隐式地转换为指向数组第一个元素的指针。而数组指针是指向整个数组的指针,所以ptr=a这种赋值方式不正确。必须显示地强制类型转换ptr = (int (*)[100])a;或者p = &a,这里&a也是可以到指向数组的指针。
5、数组指针的举例:
     

#include
#include
#include

int main()
{
    int a[10] = {1,2,3,4,5,6};

    int (*ptr)[10] = NULL;//数组指针
    ptr = (int (*)[10])a;//通过显示类型转换为ptr赋值
   
    printf("%p %p\n",ptr,a);

    printf("%d ",(*ptr)[2]);
    printf("%d\n",*(*ptr+4));

    return 0;

}


  函数的执行结果  0xbfa82dd4 0xbfa82dd4
                3 5
   

  可以看出ptr存放的内存地址和a所存放的内存地址是一样的都指向数组的首地址。但是ptr是指向数组的指针,而a被隐式地转换为指向数组第一个元素的指针。
  对ptr+1加的长度是整个数组的长度,而a+1加的加的长度是一个数组元素的长度。
  ptr是变量可以自加,自减操作。而a是变量,不能执行自加自减少。

   
  二、指针数组
   1、指针数组--数组元素都是指针类型的数组
   2、声明
     char *str[10];//声明一个有10个元素的数组,每个元素都是一个char *型指针。
     int *array[10];//声明一个有10个元素的数组,每个元素都是一个指向int *型指针
   3、数组指针的使用
     
#include
#include
#include
int main()
{
    char *str[5];//定义数组指针
    char s[10];
    int i = 0;
    for (;i < 5;++i)
    {   
        printf("输入一个字符串:");
        scanf("%s",s);
        str = (char *)malloc(sizeof(s));//给每个指针分配内存
        strcpy(str,s); //复制字符串
    }

    for (i = 0;i < 5;++i)
    {
        printf("str[%d] = %s\n",i,str);
    }

    for (i = 0;i < 5;++i)
    {
        free(str);//释放内存
    }

    return 0;
}



程序的执行结果如下:
输入一个字符串:aaaaa         
输入一个字符串:bbbbbb
输入一个字符串:ccccc
输入一个字符串:ddddddddd
输入一个字符串:eeeee
str[0] = aaaaa
str[1] = bbbbbb
str[2] = ccccc
str[3] = ddddddddd
str[4] = eeeee

这是在网上查到的,学习了。
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

12
 
printf("%f\n", 10 / 3)的输出结果是0.000000

赞赏

1

查看全部赞赏

 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

13
 

回复 12楼 she1987 的帖子

为什么是0.000000?
 
 
 

回复

473

帖子

0

TA的资源

纯净的硅(高级)

14
 

[quote]原帖由 she1987 于 2011-5-10 16:19 发表 printf("%f\n", 10 / 3)的输出结果是0.000000 [/quote

我也不太明白,F不是浮点型吗

 
 
 

回复

2804

帖子

0

TA的资源

五彩晶圆(初级)

15
 

回复 14楼 zjjone1023 的帖子

输出确实是0.00000,但是为什么可能就很多人都不知道了!~
个人签名QQ:1625345502
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

16
 

回复 13楼 xiaojianjian 的帖子

“10/3”的结果是取整数,而输出要求的是浮点数,故是0.00000。
 
 
 

回复

2804

帖子

0

TA的资源

五彩晶圆(初级)

17
 

回复 16楼 she1987 的帖子

能在详细的解释一下吗?
个人签名QQ:1625345502
 
 
 

回复

2804

帖子

0

TA的资源

五彩晶圆(初级)

18
 

回复 4楼 jxb01033016 的帖子

为什么是整形?
个人签名QQ:1625345502
 
 
 

回复

2804

帖子

0

TA的资源

五彩晶圆(初级)

19
 

回复 7楼 leang521 的帖子

为什么是整形?
个人签名QQ:1625345502
 
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

20
 
这个帖子问的好
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表