【黑马程序员】-01c语言基础知识(变量和scanf)

来源:互联网 发布:Mac软件删除 编辑:程序博客网 时间:2024/06/05 04:54

------- <ahref="http://www.itheima.com" target="blank">android培训</a>、<ahref="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

一. 变量

1. 变量的定义:变量类型  变量名;

   目的:分配内存空间给变量占用。(例如:int型占用4个字节,char占1个字节)

   不同类型所占用得空间:

  16位编译器32位编译器 64位MAC编译器char    1   1        1int    2   4        4float    4   4        4double    8   8        8

   在c语言中,无bool型。

2. 变量输出:

      变量的输出常用的格式为:

    (1)printf("%d", 变量名或者常量);//%d为格式符,输出时变量名或者常量占用%d的位置。

    (2)输出类型的规定有以下几点:

       %d:输出整型        %f:用来输出小数,默认为6位,可以通过“.x”来给边输出的小数位数,例如“%.4f”表示小数点后输出4位数。

          %c:输出字符

         printf("%d, %.2f, %c", 14, 13.2, 'd');  //整体的例子

(3)变量使用注意

        每一个变量在使用时,都是有一定的作用域的,超出作用域,系统就会报错。一般,作用域的判断可以根据大括号的范围来确定。但是也有例外。

3. 代码块

         因为在ios系统开发中非常关注内存,因此代码块的使用有利于用尽尽快释放,也即是说及时回收不再使用的变量。下边以一段代码为例解释代码块:

#import <Foundation/Foundation.h>int main(){    int score = 100;    {   //限定了score的使用范围        int score = 200;                //在寻找score时,先寻找离自己最近的使用。因此输出为200.        printf("score的值为:%d\n", score);    }  //内层score的作用范围到此结束。    printf("score的值为:%d\n", score);  //输出为100.        return 0;}
4. 全局变量

   一般的变量我们都会定义在main函数之中,但是有时我们也会在main函数之外定义一些变量,这些变量称之为全局变量。

二. scanf函数

1. 在系统内部,内存都是以字节为单位。而且内存的寻址都是由大到小。

2. 变量越先定义,地址越大;

3. 如果一个已知类型的变量地址已经知道了,那么接下来的变量的地址就知道了。

   下面以一段代码为例:

#import <Foundation/Foundation.h>int main(){    int score = 100;  //先定义,因此地址应该大    int score1 = 200;  //后定义,地址应该小        printf("score的地址为:%p\n", &score);  //输出score的地址:0x7fff5fbff7d8    printf("score1的地址为:%p\n", &score1);  //输出score1的地址:0x7fff5fbff7d4        return 0;}
4. 在使用scanf时,必须包含头文件<stdio.h>,否则不能调用。scanf函数是一个阻塞式函数,等待用户输入。用户输入完毕后,就会将用户输入的值赋值给接受的变量。

(1)基本定义形式为:

            scanf("%d", 要接受数据的变量地址);

(2)scanf的其他用法和注意:

      1> scanf也可以输入字符(char)和字符点(float/double);

      2> 在多个变量输入时,scanf中用什么隔开,输入时就要用什么隔开,因此最好在输入之前,先打印一句话进行提醒用户;

      3> 如果scanf中用空格,则输入可以用空格、Tab或者回车分隔;

      4> 在scanf的“”中不能使用“\n”,这样会导致一直在输入,停不下来。

代码实现:

(1)普通使用

#import <Foundation/Foundation.h>int main(){    int c;    //注意这里不能写入“\n”,&c是去c得地址。%d限制输入整型    scanf("%d", &c);        char ch;    //%c限制输入字符型    scanf("%c", &ch);        printf("%d, %c", c, ch);        return 0;}

(2)输入一个串字符串

#import <Foundation/Foundation.h>int main(){    char str[300];  //创建一个数组在存储输入的字符串。        printf("请输入一个字符串:\n"); //提示输入字符串        scanf("%s", str);        //输出字符串    printf("接收的字符串为:%s\n", str);        return 0;}

(3)输入6个字符串

#import <Foundation/Foundation.h>int main(){    char str[6][300];  //创建一个数组在存储输入的字符串。        //printf("请输入第一个字符串:\n");        for(int i = 0; i < 6; i++)    {        printf("请输入第%d个字符串:\n", i+1);  //提示输入字符串        scanf("%s", str[i]);    }        //输出字符串    for(int i = 0; i < 6; i++)    {        printf("接收的第%d个字符串为:%s\n", i+1, str[i]);    }        return 0;}

(4)接收一个英文句子

#import <Foundation/Foundation.h>int main(){    //接收一个英文句子    char str[300];  //定义一个数组用来存储英文句子    char *strPoint = str;   //定义一个指针,指向数组        printf("请输入一端英文句子:\n");        //接收句子    do    {        scanf("%c", strPoint);    } while(*(strPoint++) != '\n');        *(strPoint-1) = '\0'; //为字符串添加结尾标识        //输入英文句子    printf("英文句子为:%s\n", str);        return 0;}




0 0
原创粉丝点击