[日常] C语言中指针变量

CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。

#include <stdio.h>
//指针变量测试
//指针变量存储的值是另一个变量的地址,也就是说改指针变量指向了另一个变量
int main(){
        int a=10;
        int c=20;
        //1.打印出变量的内存地址
        printf("%#X \n",(unsigned int)&a);//输出 0XBFA0ED70

        //2.定义指针变量时必须带*,定义并初始化,b的值是a的内存地址
        int* b=&a;

        //3.打印出指针变量本身的地址
        printf("%#X \n",(unsigned int)&b);//输出 0XBFA0ED78

        //4.打印出指针变量存储的值
        printf("%#X \n",(unsigned int)b);//输出 0XBFA0ED70

        //5.给指针变量赋值时,不用带*
        b=&c;

        //6.通过指针变量获取数据时要带*,使用指针是间接获取数据
        printf("%d \n",*b);

        //7.通过指针变量修改内存上的数据
        *b=30;
        printf("%d \n",c);

        //8.关于*和&的谜题
        int d=40;
        int* e=&d;
        int f=*&d;//等价于 *(&d) ==> d
        int* g=&*e;//等价于 &(*e) ==> e

        /**
        对星号*的总结:

        在我们目前所学到的语法中,星号*主要有三种用途:
        表示乘法,例如int a = 3, b = 5, c;  c = a * b;,这是最容易理解的。
        表示定义一个指针变量,以和普通变量区分开,例如int a = 100;  int *p = &a;。
        表示获取指针指向的数据,是一种间接操作,例如int a, b, *p = &a;  *p = 100;  b = *p;
        */
}

  

原文地址:https://www.cnblogs.com/taoshihan/p/9209094.html

时间: 2024-10-08 13:12:37

[日常] C语言中指针变量的相关文章

C语言的指针变量

C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: int a = 12; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分配的,对用户是透明的不用关心 */ 指针变量存储的是变量的地址, 比如: int a = 12 , *b; b = &a; /*如上,定义了一个整型变量a并赋值12,一个整型指针变量b 然后 用 & 取值运算符 取到变量a的地址空间值,存储到指针变量b中 此时变量b中存储的是变量a中的地址

Go语言中的变量

1 概述 变量(Variable)是程序运行过程中,内容可以变化(修改)的量,变量的功能是存储用户的数据,是计算机语言中能储存计算结果或能表示值抽象概念.变量,是通过变量的标识符定位值的过程.变量的内存模拟演示: 2 定义:声明和初始化 定义变使用var关键字,需要指定其类型,可以同时初始化,如果没有指定初始化值,则使用类型的默认值,语法如下: // 声明变量,未初始化(默认值初始化) var name string // 声明变量,特定值初始化 var user string = "Hank&

C语言中指针和数组

C语言数组与指针的那些事儿 在C语言中,要说到哪一部分最难搞,首当其冲就是指针,指针永远是个让人又爱又恨的东西,用好了可以事半功倍,用不好,就会有改不完的bug和通不完的宵.但是程序员一般都有一种迷之自信,总认为自己是天选之人,明知山有虎,偏向虎山行,直到最后用C的人都要被指针虐一遍. 指针 首先,明确一个概念,指针是什么,一旦提到这个老生常谈且富有争议性的话题,那真是1000个人有1000种看法. 在国内的很多教材中,给出的定义一般就是"指针就是地址",从初步理解指针的角度来说,这种

C 语言中的变量为什么不能以数字打头

C 语言中的变量为什么不能以数字打头? C 语言中的变量为什么不能以数字打头? 不要告诉我编译原理书上有.我暂时看不懂. 除了下面的解释外, “假如变量名允许以数字开头的话,那么语法分析器在解析一个全部为数字的字串的时候,就无法判断它是一个数字常量还是一个变量名了” 还有别的解释吗? 假如变量是2n呢?也可以和数字2区别啊?为什么不行呢? C语言这样规定是不是单纯为了编译器词法分析简单啊?还有别的原因吗? 如果你知道就跟我好好说说吧. 没有规定就不成方圆,在最初的时候如果没有那么多的规定,这样基

c语言中指针悬空

Windows编程基础 创建一个Win32应用程序Ex_SDK,在程序中构造一个编辑框控件和一个按钮.编辑框用于输入一元二次方程的系数,各系数之间用逗号分隔,当单击"计算"按钮,获取方程系数,然后将求得的根通过TextOut显示在窗口客户区中. 实验准备和说明 (1)具备知识:简单的SDK编程基础. (2)准备本次上机所需要的程序. (3)创建本次实验工作文件夹"-\网络编程实验\实验1" 实验内容和步骤 1.启动Visual C++ 6.0 打开计算机,启动Vis

认识C#语言中的变量和数据类型

C#语言中的变量 概念:一块储存数据的内存空间,并且该内存区域的数据内容可以变化 变量的三要素:数据类型.变量名.变量值 先声明后赋值 变量的声明:指定一块内存空间,用于存放数据 语法:数据类型 变量名 例如:int number;  用于存放整数 变量的赋值: 例如:int number; number=6;  用于存放整数 变量命名 硬性要求: 1.变量只能有数字.字母.下划线组成 2.变量名不得以数字开头 3.名称不能与关键字相同 4.同一个函数中变量名不得相同 软性要求: 1.变量名能够

go语言中在变量后加上接口是什么意思?

如题刚刚开始学习go 语言有些不懂: a.Data = make(map[string]interface{}) 我认为它是在申请a.Data map为字符串类型的空间,那么它后面接一个空的interface是什么意思? go语言中在变量后加上接口是什么意思? >> golang 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/golang/1010000008853468/go语言中在变量后加上接口是什么意思.html

C语言中指针的指针是如何工作的?

  我们有时看到这样地饿代码: int *ptr = &x; 这里,ptr是一个指向x在内存中的地址的指针. 假设有另外一条语句是这样地的: int **ptr2 = &ptr; 我们定义了一个指向指针的指针. 假设我们的计算机是8bit的,地址也是8bit(因此只有256字节的内存).下图代表内存的一部分(上面的一排数字代表地址).   45   55   56   57   58   59   60   61   62   63   64   65   66   67   68   6

C语言中指针*p[N], (*P)[N],及**p的区别

在C语言编程中指针经常困扰着我们,但是若能灵活运用指针的话,将会使得我们编程变得更加轻松与高效.这里讲下*p[N], (*P)[N],及**p的区别,这也是之前经常困扰我的地方. 这三者的定义分别为: int  *p[N]表示指针数组,也就是说定义了N个不同指向int型的指针. int (*p)[N]表示定义一个指针,指向一个int[N]型的指针. int **p 表示定义一个指向指针的指针. 注意[]的优先级要高于*. 指针即表示一个存放某种数据类型变量的地址,例如: #include <st