天天看点

C语言数据类型与指针入门C程序简介C语言数据类型C语言指针类型指针的应用

C程序简介

#include <stdio.h>

/**
 * <> 寻找系统的资源
 * "" 寻找我们自己的资源
 * .h .hpp 为头文件
 * .c .cpp 为实现文件
 */
int main() {

    printf("Hello Wold");

    return 0;
}
           
  • #include <stdio.h>

    表示要引入一个库,

    stdio.h

    是C语言的一个标准库。
  • 为注释,编译时会被编译器忽略。
  • int main()

    是主函数,程序从这里开始执行。
  • printf()

    stdio.h

    提供的一个函数,会打印相应的消息。
  • return 0;

    终止 main() 函数,并返回值 0。
C语言数据类型与指针入门C程序简介C语言数据类型C语言指针类型指针的应用

运行结果.png

C语言数据类型

类型 字节 值范围
char 1字节 -128 ~ 127或 0 ~ 255
unsigned char 1字节 0 ~ 255
signed char 1字节 -128 ~ 127
int 2 或 4 字节 -32,768 ~ 32,767 或 -2147483648 ~ 2147483647
unsigned int 2 或 4 字节 0 ~ 65,535 或 0 ~ 4294967295
short 2 字节 -32768 ~ 32767
unsigned short 2 字节 0 ~ 65535
long 4 字节 -2147483648 ~ 2147483647
unsigned long 4 字节 0 ~ 4294967295
float 4 字节 1.2E-38 ~ 3.4E+38
double 8 字节 2.3E-308 ~ 1.7E+308

以64位机器为例,下图为各个类型所占字节数:

C语言数据类型与指针入门C程序简介C语言数据类型C语言指针类型指针的应用

C语言数据类型所占字节数-64位机器.png

C语言指针类型

在C语言中,每个变量都会有一个内存地址,而指针就是用来保存内存地址,即指针 = 内存地址
#include <stdio.h>

int main() {

    int int_value = 100;
    int *p = &int_value;

    printf("int_value的内存地址:%p\n", &int_value);
    printf("*p指向的内存地址:%p\n", p);
    printf("*p指向的内存地址所对应的值:%d", *p);

    return 0;
}
           
  • int int_value = 100

    ,这里我们定义了一个 int类型的变量,并为其赋值为 100,其中

    int_value

    为变量名称,你也可以用其他变量名称,只要符合规范即可。
  • int *p = &int_value

    这里我们定义了一个 int类型的指针变量,并将

    int_value

    这个变量的内存地址赋值给

    *p

    *

    是用来指定一个变量为指针类型。

    &

    为取地址符,即获取一个变量的内存地址。

    下图是上面代码被编译执行时的结果

    C语言数据类型与指针入门C程序简介C语言数据类型C语言指针类型指针的应用
    image.png

当然,除了int类型的指针,也可以定义其他类型的指针,在C语言中万物皆指针,如下:

#include <stdio.h>

int main() {
    
    /** int 类型的指针 */
    int *ip;
    
    /** double 类型的指针 */
    double *dp;
    
    /** float 类型的指针 */
    float  *fp;
    
    /** char 类型的指针 */
    char  *cp;
    
    return 0;
}
           

指针的应用

#include <stdio.h>

void swapValue(int *value1, int *value2) {
    int tmp = *value1;
    *value1 = *value2;
    *value2 = tmp;
}

int main() {

    int value1 = 100;
    int value2 = 200;
    printf("--------- before swapValue ---------\n");
    printf("value1 = %d\n",value1);
    printf("value2 = %d\n",value2);
    printf("--------- after swapValue ---------\n");
    swapValue(&value1, &value2);
    printf("value1 = %d\n",value1);
    printf("value2 = %d\n",value2);

    return 0;
}
           
  • 首先,我们定义了另外一个函数:

    void swapValue(int *value1, int *value2)

    ,这个函数接收两个int类型的指针。
  • *value1 = *value2

    表示 将

    *value2

    指向内存地址所对应的值取出并赋值给

    *value1

    所指向的内存地址。
  • 然后调用

    swapValue

    函数来实现值的互换,

    swapValue

    函数接收两个指针类型,而指针 = 内存地址,所以我们分别取出

    value1

    value2

    的内存地址传递进去,来实现值的互换。

    下图为程序的运行结果:

    C语言数据类型与指针入门C程序简介C语言数据类型C语言指针类型指针的应用
    运行结果.png

系统:Windows 10 64位

IDE:CLion