美文网首页
C语言ENDING-指针

C语言ENDING-指针

作者: 南在南方i | 来源:发表于2019-08-04 17:59 被阅读0次

指针

指针就是地址!!! 存的是地址而不是某个值,因此他的值可以随地址上的值的改变而变化

‘*’

  1. 声明/定义变量时,表示一个指针变量
    float b = 20;
    int c = 10;
    int *a;定义一个指针变量,指向的内存空间只能存放整数
    注意:定义指针变量的时候一定要给初值 不确定就给NULL(否则为野指针)
float *b = NULL;NULL是指向内存的起始地址
int *a = b;不行 指针变量只能存地址 不能存具体值
int *a = &b;不行 整形指针只能存整形数据的地址
int *a = &c;正确

2.除了定义指针变量之外 都是访问某个地址的值

int *temp = &c; 定义指针变量1
*temp = 21; 访问temp地址里面的数据 赋值为21

‘&’

  • 取某个变量的地址
  • 指针变量在内存中占领八个字节!!!(不管是什么类型)

为什么需要指针

解决跨区域(不同作用域 不同代码块/函数)之间的数据交互

数组与指针的关系

  • 数组名并不是一个变量 没有分配内存空间
  • 指针变量是有内存空间的

通过实例进行解释

//定义一个数组 系统会分配内存空间 可以存值
int num[10] = { };
//定义一个指针变量 只为变量本身分配8个字节内存空间
//无法存值 因为没有为它分配可以存值的内存空间
int *p;

//如果想给指针指向的地区赋值
//1.指针变量已经指向某块区域
int a3 = 10;
int *pA = &a3;
*pA = 30;

//2.指针指向一个数组
int num2[10] = { };
int *pNum = num2;

//3.动态分配内存  malloc realloc free
//上面两种指向的内存都是别人的
//希望分配一个属于自己的内存空间
//自己分配的内存空间必须自己释放
//普通变量的内存是系统自己分配 所以系统自己负责释放
#include <header>//创建头文件
char *pName = malloc(10 * sizeof(char));
//判断分配是否成功
if(pName == NULL){
        //分配失败
        exit(EXIT_FAILURE)
}

        pName[0] = 'j';
        pName[1] = 'a';
        pName[2] = 'c';
        
        printf("%s\n",pName);

        //当之前分配的内存空间不够了 就需要在之前的基础上重新分配
        //realloc 必须是之前使用malloc分配过的
        //如果是系统分配的内存 时不能适用realloc的
        //用完了就要自己释放内存
        pName = realloc(pName,4 * sizeaf(char));
 
        free(pName);

        return 0;

demo文件的操作模式

  • r 只读 文件不存在就报错 从头开始读
  • w 只写 文件不存在就创建 从头开始写
  • a 只写 从末尾开始写
  • r+ w+ a可读可写

结构体

是一种数据结构 复合数据类型

  • 必须要声明一种类型,例如:
struct Person
    {
        char name[10];
        int age;
        char *addr;
    };
  • 定义结构体struct Person变量 变量名xw
int i;
    struct Person xw;
    //xw.name == "小王";//数组一旦定义 地址不能改变
                        //不能直接给数组赋值
    xw.name[0] = 'x';//系统为变量分配内存了
    xw.name[1] = 'w';
    xw.age = 30;

    xw.addr == "西南大学";//常量字符串地址是由系统分配的

    int i1 = 10;
    struct  Person zs = { "张三",20 };

使用结构体可以方便整洁的将许多不同种类的数据融入到一个结构中并且十分方便调用

PS.

  • 经过六七天的入门学习感觉抓住了一点感觉,最大的收获就是承受心理压力的能力和抗击打能力大大增强了(通俗点就是脸皮厚了),不过来日仍可期
  • (洗头的时候对着沾满泡沫和头发的双手陷入了沉思.jpg)

人常常会被“解释”束缚住,失去思考的本质

相关文章

  • C语言ENDING-指针

    指针 指针就是地址!!! 存的是地址而不是某个值,因此他的值可以随地址上的值的改变而变化 ‘*’ 声明/定义变量时...

  • C语言05- 指针

    C语言05- 指针 13:指针 指针是C语言中的精华,也是C语言程序的重点和难点。 13.1:指针定义与使用 指针...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言指针总结大学霸IT达人

    C语言指针总结大学霸IT达人 C语言的指针是C语言区别其它语言的最主要的特定之一。有了指针,C语言就可以抛开所有束...

  • 带小白学C语言指针

    C语言里指针才是C语言的开始和指针;C语言里基本所有东西都是由指针演变而成; 指针是指向地址的变量,类型就是指针...

  • 在Swift中使用C语言的指针

    在Swift中使用C语言的指针 在Swift中使用C语言的指针

  • [Swift]结构体指针操作

    C语言的指针操作 在c语言中申明一个变量并通过指针修改该变量的值 a value is 2 c语言操作结构体指针操...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

网友评论

      本文标题:C语言ENDING-指针

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