博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重拾C,一天一点点_7
阅读量:4583 次
发布时间:2019-06-09

本文共 3130 字,大约阅读时间需要 10 分钟。

标准库,atof()函数包含在头文件<stdlib.h>中

/******把字符串s转换为相应的双精度浮点数*******/

1 #include 
2 #include
3 double atof(char s[]); 4 5 main(){ 6 printf("%f\n", atof("109.999")); //109.999000 7 printf("%f\n", atof("0.2350000")); //0.235000 8 printf("%f\n", atof(" 1.2350 5")); //1.235000 9 printf("%f\n", atof("-1.235")); //-1.23500010 }11 /******把字符串s转换为相应的双精度浮点数*******/12 double atof(char s[]){13 double val, power;14 int i, sign;15 for(i=0; isspace(s[i]); i++){16 ;17 }18 sign = s[i] == '-' ? -1 : 1;19 if('+' == s[i] || '-' == s[i]){20 i++;21 }22 for(val=0.0; isdigit(s[i]); i++){23 val = 10.0 * val + (s[i] - '0'); 24 }25 if('.' == s[i]){26 i++;27 }28 29 //把小数部分跟整数一样处理,记录位数,再除位数得值 30 for(power=1.0; isdigit(s[i]); i++){31 val = 10.0 * val + (s[i] - '0');32 power *= 10.0;33 }34 35 return sign * val / power;36 }

 

C语言不允许在一个函数定义其他函数。不像JS,可以这样。      

外部变量(全局变量):永久存在。

默认情况下,外部变量与函数具有下列性质:通过同一个名字对外部变量的所有引用(即使这种引用来自于单独编译的不同函数)实际上都是引用同一个对象(标准中这一性质称为外部链接)
内部变量(局部变量):函数内有效。
逆波兰表示法:
(1 - 2) * (4 + 5)    可表示为:1 2 – 4 5 + *

静态变量:
外部的static声明通常多用于变量,也可用于声明函数。
通常情况下,函数是可全局访问的,但声明为static类型函数,仅对该函数所在的文件可见,其他文件无法访问。
static也可声明局部变量,与普通局部变量不同的是,它的值一直存在。

#include 
static int i = 0;main(){ int j; for(j=0; j<10; j++){ i++; } printf("%d\n",i); //10}

寄存器变量
register变量放在机器的寄存器中,这样可以使程序更小、执行速度更快。但编译器可以忽略此选项。
    register int x;
    register char c;
register声明只适用于自动变量以及函数的形式参数。
f(register unsigned m, register long n){
    register int i;
….
}
实际使用时,底层硬件环境对寄存器变量的使用会有一些限制。每个函数中只有很少的变量可以保存在寄存器中,且只允许某些类型的变量。但是,过量的寄存器声明并没有什么害处,因为编译器可以忽略过量的或不支持的寄存器变量声明。另外,无论寄存器变量实际上是不是存放在寄存器中,它的地址都是不能访问的。在不同的机器中,对寄存器变量的数量和类型的具体限制也不同。

初始化:在不进行显式初始化的情况下,外部变量和静态变量都被初始化为0,而自动变量和寄存器变量的初值没有定义(即初值为无用的信息)。

#include 
int i;static long l;main(){ int j; register int k; printf("%d\n",i); //0 printf("%d\n",l); //0 printf("%d\n",j); //2130567168无效值 printf("%d\n",k); //4199260无效值 }

全局变量与静态变量,初始化表达式必须是常量表达式,且只初始化一次。

局部变量与寄存器变量,初始化可以包含在此表达式之前已定义的值,包括函数调用。
定义数组
    int months[] = {1,2,3,4,5,6,7,8,9,10,11,12};        //12
    当不指定数组长度时,编译器把花括号初始化表达式的个数作为数组长度。
如果初始化表达式的个数比数组元素少,则对全局变量、静态变量和局部变量来说,没有初始化表达式的元素的值为0。反之,则是错误的。不能一次将一个初始化表达式指定给多个数组元素。

#include 
main(){ int months[15] = {1,2,3,4,5,6,7,8,9,10,11,12}; //int arr[3] = {1,2,3,4}; //error printf("%d\n", months[12]); //0 months[12] = 13; printf("%d\n", months[12]); //13 months[14] = 15; months[13] = 14; printf("%d\n", months[14]); //15}

字符数组初始化

    char s[] = “abcd”;
    char s[] = {‘a’, ‘b’, ‘c’, ‘d’};

 char s[] = {"abcd"};

附:

1、有一个人在一个森林里迷路了,他想看一下时间,可是又发现自己没带表。恰好他看到前面有两个小女孩在玩耍,于是他决定过去打听一下。更不幸的是这两个小女孩有一个毛病,姐姐上午说真话,下午就说假话,而妹妹与姐姐恰好相反。但他还是走近去他问她们:“你们谁是姐姐?”胖的说:“我是。”瘦的也说:“我是。”他又问:现在是什么时候?胖的说:“上午。”“不对”,瘦的说:“应该是下午。”这下他迷糊了,到底他们说的话是真是假?

2、有一个外地人路过一个小镇,此时天色已晚,于是他便去投宿。当他来到一个十字路口时,他知道肯定有一条路是通向宾馆的,可是路口却没有任何标记,只有三个小木牌。第一个木牌上写着:这条路上有宾馆。第二个木牌上写着:这条路上没有宾馆。第三个木牌上写着:那两个木牌有一个写的是事实,另一个是假的。相信我,我的话不会有错。假设你是这个投宿的人,按照第三个木牌的话为依据,你觉得你会找到宾馆吗?如果可以,那条路上有宾馆哪条路上有宾馆?

原文博客地址:

转载于:https://www.cnblogs.com/lltong/p/3381709.html

你可能感兴趣的文章
lnmp集成开发环境安装pdo_dblib扩展
查看>>
linux web.py spawn-fcgi web.py 配置
查看>>
lintcode : 空格替换
查看>>
lintcode 中等题:subsets II 带重复元素的子集
查看>>
【原创】Linux基础之测试域名IP端口连通性
查看>>
webstorm快捷键大全
查看>>
SQL Server 语法大全
查看>>
MySQL存储过程
查看>>
HttpContext是干什么的
查看>>
线程安全
查看>>
原形模式
查看>>
iOS开发笔记5:多线程之NSThread、NSOperation及GCD
查看>>
php中curl的详细解说【转】
查看>>
Codeforces Round #281 (Div. 2) C. Vasya and Basketball 二分
查看>>
hdu 6069 Counting Divisors 筛法
查看>>
codeforces gym 100971 K Palindromization 思路
查看>>
各个控件说明
查看>>
鼠标事件(jQuery)
查看>>
delete指针时coredump的分析之旅
查看>>
openoffice+pdf2swf+FlexPaper在线显示office和pdf
查看>>