美文网首页
C语言指针一

C语言指针一

作者: AuglyXu | 来源:发表于2018-09-07 13:08 被阅读0次

指针

  • 指针变量?

    • 指针变量和普通变量一样, 都是用来保存数据的
    • 只不过和普通变量有一点区别, 普通变量可以保存int/char/float/double等类型的数据
    • 指针变量只能保存内存地址
    • 简而言之, 指针变量, 就是专门用于保存内存地址的变量
  • 指针变量的定义

int *p;

注意点:
所有的指针变量占用的内存大小都一样,在32位编译器中, 占用4个字节,在64位编译器中, 占用8个字节

int num;
num = 9;
int *p;
p = #
  • 将num变量的占用内存最小的那个地址存储到指针变量p中
    • 只要一个变量中存储了另外一个变量的内存地址, 那么我们就说这个变量指向了另外一个变量
    • 只要一个变量中存储了另外一个变量的内存地址, 那么我们就可以根据这个内存地址找到另外一个变量的内存,从而操作那一块内存
 printf("&num = %p\n", &num); // &num = 0060FEA8
    // p和普通变量一样, 代表取出p中存储的值
    printf("p = %p\n", p); // p = 0060FEA8

    // printf("num = %i\n", num);
    // &p和普通&变量也一样, 代表取出p自己的内存地址
    printf("&p = %p\n", &p);

用指针访问内存空间

  • 只要一个变量保存了另外一个变量的地址, 就代表这个变量指向了另外一个变量
  • 只要一个变量指向了另外一个变量, 就可以通过*变量名称方式, 操作另外一个变量的内存空间(即解引)
    // 1.定义一个普通变量
    int num;
    num = 6;
    // 2.定义一个指针变量
    int *p;
    // 3.利用指针变量, 保存某个变量的地址
    p = # // 将num的内存地址存储到了变量p中

    printf("修改之前: %i\n", num);//6
//    num = 8;
    *p = 4; // 在指针变量前面加上*号, 代表访问指针指向的那块内存
    printf("修改之后: %i\n", num);//4
    printf("修改之后: %i\n", *p);//4

指针注意点

1.指针只能保存地址, 不能保存其它的值

2.一个变量可以被多个指针指向

3.指针的指向可以改变

4.定义指针变量时前面的数据类型, 必须和将来要保存的变量前面的数据类型一致


指针的内存表现

int num = 9;
int num2 = 10;
int *p1,*p2;
p1 = #
p2 = &num2;

指针具有类型

  • 指针为什么要有类型?
    • 由于指针变量指向的是某一个变量

    • 所以在获取指向变量中存储数据的时候, 指针是不知道要获取多少个字节的数据的

    • 所以指针变量的数据类型的作用, 就是告诉指针, 在获取指向变量的数据的时, 需要获取几个字节的数据


指针案例

#include <stdio.h>
//int sum(int num1, int num2);
void test(int num1, int num2, int *res1, int *res2, int *res3, int *res4);
int main()
{
    // 需求: 要求定义一个函数, 可以同时返回两个变量的和,差,积,商
    // 需要大家知道的是: 在C语言中, 默认情况下一个函数只能返回一个值
    // 如果想让某一个函数同时返回多个值, 可以借助指针来实现
    int a = 10;
    int b = 20;
//    int res = sum(a, b);
//    printf("res = %i\n", res);

    int d, e, f, g;
    test(a, b, &d, &e, &f, &g);
    printf("和 = %i\n", d);
    printf("差 = %i\n", e);
    printf("积 = %i\n", f);
    printf("商 = %i\n", g);
    return 0;
//    printf("return 后面的语句\n");
}

/**
 * @brief test 可以同时返回两个变量的和,差,积,商
 * @param num1 参与运算的第一个变量
 * @param num2 参与运算的第二个变量
 * @param res1 和
 * @param res2 差
 * @param res3 积
 * @param res4 商
 */
void test(int num1, int num2, int *res1, int *res2, int *res3, int *res4){
    *res1 = num1 + num2;
    *res2 = num1 - num2;
    *res3 = num1 * num2;
    *res4 = num1 / num2;
}

相关文章

  • C语言05- 指针

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

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

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

  • 02-C语言的指针

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

  • 带小白学C语言指针

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

  • [Swift]结构体指针操作

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

  • [初学C++]浅谈C C++引用和指针的联系和区别

    为什么C/C++语言使用指针? ①一方面,每一种编程语言都使用指针。不止C/C++使用指针。每一种编程语言都使用指...

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

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

  • 2018-06-05

    C语言指针教程 (一)什么是C语言指针指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。...

  • 1+1 不等于2? 来看这道奇怪的C语言题目

    对于很多C语言初学者来说,指针是一大难题! 但是指针也是c语言的灵魂,离开指针,可能c语言就只能处理小学数学题了。...

  • Go语言-指针

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

网友评论

      本文标题:C语言指针一

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