美文网首页
c基础——你好数据类型

c基础——你好数据类型

作者: 東方月初 | 来源:发表于2018-07-26 18:06 被阅读7次

基本数据类型

    int i = 100;
    double d = 100;
    float f = 100;
    long long l = 100;
    short s = 100;
    char c = 'C';
    
    printf("int的值:%d\n",i);
    printf("double的值:%lf\n",d);
    printf("float的值:%f\n",f);
    printf("long的值:%ld\n",l);
    printf("short的值:%hd\n",s);
    printf("char的值:%c\n",c);

打印如下

    int的值:100
    double的值:100.000000
    float的值:100.000000
    long的值:100
    short的值:100
    char的值:C
  • 基本数据类型所占字节
    printf("int的字节数:%d\n",sizeof(int));
    printf("double的字节数:%d\n",sizeof(double));
    printf("float的字节数:%d\n",sizeof(float));
    printf("long的字节数:%d\n",sizeof(long));
    printf("short的字节数:%d\n",sizeof(short));
    printf("char的字节数:%d\n",sizeof(char));

打印如下

    int的字节数:4
    double的字节数:8
    float的字节数:4
    long的字节数:8
    short的字节数:2
    char的字节数:1

指针

指针是一个变量,其值为另一个变量的地址。即内存位置的直接地址。像其他变量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:

    int *p;
  • 分析未初始化的局部指针和全局指针的 x *x的含义
  1. 局部指针

    int *x;
    printf("x的值:%d\n",x);
    printf("*x的值:%d\n",*x);
    

    打印如下

    x的值:-290633968
    *x的值:-290633528
    
  2. 全局指针

    int *x;
    printf("x的值:%d\n",x);
    printf("*x的值:%d\n",*x);
    

    打印如下

    x的值:0
    

    对于x就是一个普通的变量

    1. 对于局部变量,如果没有赋初值,那么默认为随机值
    2. 对于全局变量和局部静态变量,如果没有初始化值,那么系统默认赋值为0。

    *x指针,其值为另一个变量的地址

    1. 对于局部指针,如果没有初始化,那么分配地址为随机内存地址
    2. 对于全局指针,如果没有初始化,那么系统不会分配内存地址

小作业

  1. 写一个方法对两个数的值进行交换

    void change(int *p1,int *p2){
        int temp = *p1;
        *p1 = *p2;
        *p2 = temp;
    }
    
  2. 不开辟多余的内存对两个数的值进行交换

    int p1 = 108;
    int p2 = 666;
    
    p1 = p1 + p2;
    p2 = p1 - p2;
    p1 = p1 - p2;
    
    printf("p1的值:%d\n",p1);
    printf("p2的值:%d\n",p2);
    
    

源码放送

#include <iostream>

using namespace std;
int *h;
//值传递->修改值失败
void change(int i){
    i=333;
}
//址传递->修改值成功
void change(int *p){
    *p = 333;
}
//写一个方法对两个数的值进行交换
void change(int *p1,int *p2){
    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;
    
}

int main(int argc, char *argv[]) {
    //printf打印函数
    printf("hello\n");
    //基本数据类型
    int i = 100;
    double d = 100;
    float f = 100;
    long long l = 100;
    short s = 100;
    char c = 'C';
    printf("------------------------\n");

    printf("int的值:%d\n",i);
    printf("double的值:%lf\n",d);
    printf("float的值:%f\n",f);
    printf("long的值:%ld\n",l);
    printf("short的值:%hd\n",s);
    printf("char的值:%c\n",c);
    printf("------------------------\n");

    //变量的地址 %p占位 &取地址
    
    printf("i的地值:%p\n",&i);
    printf("------------------------\n");
    
    //sizeof取数据类型的字节数
    
    printf("int的字节数:%d\n",sizeof(int));
    printf("double的字节数:%d\n",sizeof(double));
    printf("float的字节数:%d\n",sizeof(float));
    printf("long的字节数:%d\n",sizeof(long));
    printf("short的字节数:%d\n",sizeof(short));
    printf("char的字节数:%d\n",sizeof(char));
    printf("------------------------\n");

    int *p = &i;
    *p = 200;
    change(i);
    printf("值传递int的值:%d\n",i);

    change(&i);
    printf("址传递int的值:%d\n",i);
    int p1 = 108;
    int p2 = 666;

    change(&p1,&p2);
    printf("p1的值:%d\n",p1);
    printf("p2的值:%d\n",p2);
    
    //思考a=b什么意思?
    int *a = &p1;
    int *b = &p2;
    printf("a的值:%d\n",a);
    printf("b的值:%d\n",b);
    a = b;
    printf("a = b 后a的值:%d\n",a);
    printf("a = b 后b的值:%d\n",b);
    //看到打印结果就很明显了这里a,b只是一个变量而已
    
    //  1 对于全局变量和局部静态变量,如果没有初始化值,那么系统默认赋值为0。
    //  2 对于局部变量,如果没有赋初值,那么默认为随机值
    int *x;
    printf("x的值:%d\n",x);
    printf("x的值:%d\n",*x);
}

相关文章

网友评论

      本文标题:c基础——你好数据类型

      本文链接:https://www.haomeiwen.com/subject/vedbmftx.html