(一)C语言之基本数据类型、输入输出、指针

栏目: C · 发布时间: 5年前

内容简介:引入头文件,在头文件中只有函数的声明,在编译的时候会去找到函数的实现scanf(“%d”,&i);控制台输入,& 为取地址符

引入头文件,在头文件中只有函数的声明,在编译的时候会去找到函数的实现

#include <stdio.h>

2、基本数据类型

(1)、基本数据类型所使用的输出占位符

数据类型 占位符
short %d
int %d
long %d
float %f
double %lf
char %c
十六进制 %x
八进制 %o
字符串 %s

(2)、基本数据类型所占字节数

数据类型 字节数
short 2
int 4
long 8
float 4
double 8
char 1

二、输入输出函数

1、输入函数

scanf(“%d”,&i);

控制台输入,& 为取地址符

2、输出函数

printf(“i的值为:%d\n”,i);

控制台输输出函数

#include <stdio.h>

void main(){
    int i;
    printf("请输入一个整数:");
    //赋值
    scanf("%d",&i);
    //打印
    printf("i的值为:%d\n",i);
    system("pause");
}

三、指针

1、指针的定义

指针存储的是变量的内存地址

变量名就是对内存空间中一段数据的抽象

内存地址就是系统给数据分配的编号

#include <stdio.h>
void main(){
    int i = 0;
    //指针变量,p 的值就是 i 这个变量的内存地址
    int* p = &i;
    printf("内存地址为:%#X\n",p);
    system("pause");
}

控制台输出

内存地址为:0X8FF764

指针类型的定义:在基本数据类型后加*

如:

float f = 88.6;
    //创建一个float类型的指针
    float* fp = &f;

float f = 88.6;
    //创建一个float类型的指针
    float *fp = &f;

通过指针修改变量的值

void main(){
    int i = 90;
    //创建一个int类型的指针变量
    int *p = &i;
    printf("i的值为:%d\n",i);
    // p 代表变量 i 的内存地址
    // *p 代表 p 这个内存地址上的数据
    *p = 210;
    printf("i的值为:%d\n",i);
    system("pause");
}

控制台输出:

i的值为:90
i的值为:210

指针变量的内存地址说明:

(一)C语言之基本数据类型、输入输出、指针

2、指针的类型

指针有类型,地址没有类型;

地址只是开始的位置,类型是指明读取到什么位置结束

3、NULL空指针

指针为NULL的指针,默认值为0,默认内存地址访问0x000000操作系统不允许

void main(){
    int i = 9;
    int *p = NULL;

    //空指针的默认值为0
    printf("%#X\n",p);
    //访问内存地址0x000000操作系统不允许
    printf("%d\n",*p);
    getchar();
}

4、多级指针

指针保存的是变量的地址,保存的这个变量还可以是一个指针变量

void main(){
    int a = 50;
    //p1上保存的是 a 的地址
    int* p1 = &a;
    //p2上保存的是 p1 的地址
    int** p2 = &p1;
    printf("p1d的值为:%#x,p2的值为:%#x\n",p1,p2);
    //通过p2 改变a的值
    **p2 = 90;
    printf("a的值为:%d\n",a);
    getchar();
}

输出结果为:

p1d的值为:0xcffa9c,p2的值为:0xcffa90
a的值为:90

5、指针运算

指针的运算,一般在数组遍历时才有意义,基于数据在内存中线性排列的方式

void main(){
    //数组在内存中连续存储
    int ids[] = {78,90,23,65,19};
    //数组的变量名:ids就是数组的首地址
    printf("%#x\n",ids);
    printf("%#x\n",&ids);
    printf("%#x\n",&ids[0]);
    //指针变量
    int *p = ids;
    printf("%d\n",*p);
    //指针的加法
    p++;//指针向前移动sizeof(数据类型)个字节
    printf("%d\n",*p);
    getchar();
}

输出结果为:

0x7dfaa0
0x7dfaa0
0x7dfaa0
78
90

通过指针给数组赋值

void main(){
    int uids[5];
    int* p = uids;
    ////高级写法
    //int i = 0;
    //for (;i < 5; i++){
    //    uids[i] = i;
    //}
    //早些版本的写法
    int i = 0;
    for(; p < uids + 5 ; p++){
        *p = i;
        i++;
    }

}

6、函数指针

函数指针的定义:

[函数返回值类型]([函数指针的名称])([函数的参数列表])
#include <Windows.h>
void msg(char* title,char* content){
    MessageBox(0,content,title,0);
}

void main(){
    //msg();
    //函数指针
    void(*fun_p)(char* title,char* content) = msg;
    fun_p("消息标题","消息内容");
    getchar();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出Node.js

深入浅出Node.js

朴灵 / 人民邮电出版社 / 2013-12-1 / CNY 69.00

本书从不同的视角介绍了 Node 内在的特点和结构。由首章Node 介绍为索引,涉及Node 的各个方面,主要内容包含模块机制的揭示、异步I/O 实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据Buffer 的细节、Node 中的网络编程基础、Node 中的Web 开发、进程间的消息传递、Node 测试以及通过Node 构建产品需要的注意事项。最后的附录介绍了Node 的安装、调试、编码......一起来看看 《深入浅出Node.js》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具