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。
运行结果.png

C语言数据类型

类型字节值范围
char1字节-128 ~ 127或 0 ~ 255
unsigned char1字节0 ~ 255
signed char1字节-128 ~ 127
int2 或 4 字节-32,768 ~ 32,767 或 -2147483648 ~ 2147483647
unsigned int2 或 4 字节0 ~ 65,535 或 0 ~ 4294967295
short2 字节-32768 ~ 32767
unsigned short2 字节0 ~ 65535
long4 字节-2147483648 ~ 2147483647
unsigned long4 字节0 ~ 4294967295
float4 字节1.2E-38 ~ 3.4E+38
double8 字节2.3E-308 ~ 1.7E+308

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

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*是用来指定一个变量为指针类型。&为取地址符,即获取一个变量的内存地址。
    下图是上面代码被编译执行时的结果
    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 函数接收两个指针类型,而指针 = 内存地址,所以我们分别取出 value1value2的内存地址传递进去,来实现值的互换。
    下图为程序的运行结果:
    运行结果.png

系统:Windows 10 64位
IDE:CLion

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值