美文网首页Android/NDK开发C/C++C语言
(一) C语言之基本数据类型_输入输出_指针

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

作者: onestravel | 来源:发表于2019-03-06 18:27 被阅读18次

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

一、基本数据类型

1、头文件

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

#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

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

指针变量的内存地址说明

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();
}

相关文章

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

    (一) C语言之基本数据类型输入输出指针 一、基本数据类型 1、头文件 引入头文件,在头文件中只有函数的声明,在编...

  • 数据类型简介及输出

    (1) 数据类型简介 数据类型简介: Object - C 数据类型 分为 基本数据类型, 构造类型 和 指针类型...

  • NDK系列(一)C语言基本了解

    基本项目结构 基本数据类型 基本数据类型所占字节数 地址与指针:在C中 万物皆地址 指针取值 使用函数的时候 传值...

  • 进击的NDK01-基本数据类型和指针

    NDK 基本数据类型 输入输出函数 指针 指针存储的是变量的内存地址内存地址,系统给数据分配的编号 变量名,对内存...

  • NULL,nullptr,null,nil,Nil,NSNull

    NULL:一般指的是C语言里指向基本数据类型以及C类型的空指针,表示空指针((void*)0)或是0,C++里NU...

  • C/C++ 数据长度

    知识点 C/C++基本数据类型在各平台下的长度(所占字节) 类所占字节(例题5) 基本数据类型 通过指针大小,可以...

  • C语言学习(第一天)

    C语言基本数据类型 输入和输出函数 指针入门 C语言指针实现数据交换 指针的常见错误 不可以使用已经被回收的变量 ...

  • 2020徐州C++初级班,开启探索计算机科学之路

    课程内容: 1、C++输入输出机制; 2、C++基本数据类型; 3、C++运算符和表达式; 4、C++顺序结构; ...

  • C语言-数据类型

    C语言中数据类型是什么重要的,他们是定义变量的基础。C语言中数据类型大体上可以分为:基本数据类型,构造类型,指针...

  • 数据类型、运算符、表达式

    C语言的数据类型:基本数据类型、构造数据类型、指针类型、空类型。 构造数据类型:是根据已定义的一个或多个数据类型用...

网友评论

    本文标题:(一) C语言之基本数据类型_输入输出_指针

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