c/c++

c基础—基本数据类型和指针入门

2018-06-10  本文已影响1人  Peakmain

c语言第一个程序HelloWorld

#include<stdio.h>//导入头文件,都是方法的声明,.h .hpp 里面都是方法的声明:.cpp(c++) .c(c)都是方法的实现
void main(){
    printf("Hello world");//打印输出
    getchar();//暂停一下
}

基本数据类型

//基本数据类型
void main(){
    int i = 100;
    double d = 200;
    float f = 200;
    long l = 100;
    short s = 100;
    char c = 'D';
    //字符串char *
    //输出打印,要用占用符
    printf("i的值是:%d\n" , i);
    printf("d的值是:%lf\n", d);
    printf("d的值是:%f\n", f);
    printf("d的值是:%ld\n", l);
    printf("d的值是:%d\n", s);
    printf("d的值是:%c\n", c);
    getchar();
}

变量地址和指针变量

//变量的地址,任何的数据或者变量都会有地址
void main(){
    int i = 100;
    //&i &代表取变量的地址
    //通过debug的调试,我们可以根据地址查询该地址的数据, int 4字节, sizeof()获取数据类型所占的字节数
    printf("i的地址是:%p", &i);
    getchar();
}

debug下根据地址查询该地址的数据,根据下图选择内存


image.png

输入debug中获得的地址然后复制,然后选择4字节,带符号显示


image.png

我使用的软件是visual studio2013

sizeof()获取数据类型所占的字节数

// sizeof()获取数据类型所占的字节数
void main(){
    printf("int 数据类型所占的字节数:%d\n", sizeof(int));//4
    printf("double 数据类型所占的字节数:%d\n", sizeof(double));//8
    printf("char 数据类型所占的字节数:%d\n", sizeof(char));//1
    getchar();
}

指针变量和获取地址的值

//指针变量和获取地址的值
void main(){

    int i = 100;
    double d = 200;
    printf("i的值是:%d\n", i);
    printf("i的值是:%d\n", *(&i));//根据地址返回值
    //指针(地址)变量,指针存放(指向)的就是变量的地址
    //int *代表的是int类型的指针(地址)
    int *p = &i;
    printf("i的值是:%d\n", *p);
    double* pl = &d;
    getchar();
}

通过指针修改值

//通过指针修改值
void main(){
    int i = 100;
    int *p = &i;

    i = 200;
    printf("i的值:%d\n", i);
    //通过指针修改值
    *p = 300;
    printf("i的值:%d", i);

    getchar();
}

通过方法修改值


//通过方法修改值
void change(int i){//这个i是另一个
    printf("change中的i的地址:%p\n", &i);
    i = 200;

}
//所以上面方法不行,可以使用指针修改值
void change(int *p){
    printf("change中的i的地址:%p\n", p);
    *p = 200;
}
void main(){
    int i = 500;
    printf("change中的i的地址:%p\n", &i);
    printf("i的值:%d\n", i);
    change(&i);
    printf("修改后i的值", i);
    getchar();

}

题目:写个方法对两个值进行交换

void change(int *a, int *b){
    int temp = *a;
    *a =* b;
    *b = temp;
}
void main(){
    int a = 100;
    int b = 200;
    change(&a, &b);
    printf("a的值是:%d\n", a);
    printf("b的值是:%d\n", b);
    getchar();
}

面试题:对a,b值进行交换,但是不开辟额外的内存(不能用中间变量)

void main(){
    int a = 100;
    int b = 200;
     a = a + b;
     b = a - b;
     a = a - b;

     printf("交换后ab的值分别是:%d,%d", a, b);

     getchar();
}
上一篇 下一篇

猜你喜欢

热点阅读