十天学会C语言

第08天C语言(09):指针-基本概念

2017-07-10  本文已影响62人  liyuhong
一、概念
/*
 如何定义指针变量
     普通变量
     数据类型 变量名称;
     指针变量
     数据类型 * 变量名称;
     数据类型 : 说明 将来指针变量能够保存 什么类型的变量的地址
     注意 : 指针变量是什么类型 : 那么将来就只能保存什么类型的变量的地址
     例如 : 指针变量是int, 那么将来就只能保存 int类型变量的地址
     * : 没有任何特殊含义, 仅仅是为了标识 这是一个指针变量
     变量名称 : 用于区分不同的变量
 
     int num; // 普通变量     num = 10;
     int * p; // 指针 , 在64位的编译器下 占用8个字节
     p = # // 将num的地址 存储到p这个地址中
     (重点 : p = &num --- *p == num)
 */
二、代码
#include <stdio.h>

// 基本数据类型 作为函数的参数 是值传递, 在函数中修改形参的值 不会影响到 外面实参的值
void change(int vlaue)
{
    vlaue = 55;
}

// 数组作为函数的参数 是地址传递,如果是地址传递 在函数中修改 形参的值 会改变影响到外面实参的值
void change2(int vlaue[])
{
    vlaue[1] = 55;
}

#pragma 指针
// 指针就是专门用于保存地址的
void change3(int *p) //用什么接收地址? 指针 = 0ffc12
{
    *p = 33;
}

int main()
{
#pragma 1.需求 : 定义一个方法,在方法中修改传入的实参的值
    /*
//    int num = 10;
    int num[] = {1,3};
    printf("修改前 num = %i\n",num[1]);
    change2(num);
    printf("修改后 num = %i\n",num[1]);
     */
    
    int num = 10;
    printf(" 前 num = %i\n",num);
    change3(&num);
    printf(" 后 num = %i\n",num);
    
    /*
     如何定义指针变量
     普通变量
        数据类型 变量名称;
     指针变量
        数据类型 * 变量名称;
        数据类型 : 说明 将来指针变量能够保存 什么类型的变量的地址
                 注意 : 指针变量是什么类型 : 那么将来就只能保存什么类型的变量的地址
                 例如 : 指针变量是int, 那么将来就只能保存 int类型变量的地址
        * : 没有任何特殊含义, 仅仅是为了标识 这是一个指针变量
        变量名称 : 用于区分不同的变量
     */
    
    /*
    int num; // 普通变量
    num = 10;
    int * p; // 指针 , 在64位的编译器下 占用8个字节
    // 千万注意 : 指针变量 只能存储地址
    p = # // 将num的地址 存储到p这个地址中
    
    // p = &num
    printf("num = %p\n",&num);
    printf("p = %p\n",p);
    
    // 指针变量前的 *号 代表访问指针变量 指向的那一块存储空间(num)
    // *p == num
    *p = 55;
//    printf("num = %i\n",num);
    printf("num = %i\n",*p);
     */
    
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读