C语言之指针基础概念

开通博客园以来第一次写随笔,就写一下关于C语言指针的一些感想吧。

很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子。其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了。

首先简介一下指针的概念好了。指针本身也是一个变量,只不过这个变量的值比较特殊,它不是常规的整型数或者浮点数,而是指向另一个变量地址的值。通过指针的值可以知道另一个变量的地址以及存在该地址中的具体数值(该数值可以是整型,浮点型,结构体,甚至也可以是一个指针),通过指针得到另一个变量的具体值的方法叫做引用。基本概念大概就是这么点。

其次通过上面的概念可以引出下面的内容。”*“有两个作用,一个是定义时出现的”*“代表这是一个指针变量,而在赋值的时候出现的”*“代表这是取出该地址所存储的值。单单这么说可能没概念,那就举个例子好了。

int a=1;//定义一个值为1的变量a
int *p=&a;//定义一个指针类型的变量p指向变量a,或者理解为将变量a的地址值赋给了指针变量p
printf("输出指针p的引用值为:%d\n",*p);//和上一行代码中的*p不同,这里的*p代表的是取出指针变量所指向地址中所存储的值

所以,输出的内容为:”输出指针p的引用值为:1“。

那么由此还可以得出下面两句等价代码:

a=10;//给a赋值为10
*p=10;//给指针p指向的地址的变量赋值为10,因为p指向a,所以*p就是a。所以这两句代码等价

下面就给出完整的可运行C语言代码:

#include<stdio.h>
int main()
{
    int a=1;
    int *p=&a;
    printf("输出指针p的引用值为%d\n",*p);
    *p=10;
    printf("输出*p的值为:%d,此时a的值为%d\n",*p,a);
    printf("输出指针p的值,即变量a的地址值为:%d\n",p);
    return 0;
}
时间: 2024-12-18 14:34:52

C语言之指针基础概念的相关文章

黑马程序员 C语言:指针的概念

指针的基本概念 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍.为了正确地访问这些内存单元,必须为每个内存单元编上号.根据一个内存单元的编号即可准确地找到该内存单元.内存单元的编号也叫做地址.既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针. 指针与变量 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量.因此,一个指

C语言05指针基础

1 局部变量和全局变量 1.1 问题 分别定义一个局部变量和全局变量,测试生命期限和作用域. 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:局部变量和全局变量 代码如下所示: #include <stdio.h> /*auto*/ int x = 1000; void f1(int a) { a = 10; auto int x = 20; static int y = 30; y++; x++; printf("in f1(),a=%d,x=%d,y=%d\n"

8.30 指针基础概念

指针的兼容性 sizeof的结果是一样的就是兼容的. int *p; unsigned int ui = 10; p = &ui;  //正确 指针相加: 不是以整数的形式增加,而是移动 数组名与指针: 函数应该传数组名 : #include <stdio.h> void func(int *a) { a += 3; *a = 100; } int main() { int a[10] = {1,2,3,4,5,6,7,8,9,0}; int i; func(&a);//这里传

指针热身——指针基础概念

#include <stdio.h> int main(void) { //注:指针=地址,指针就是地址,地址就是指针,只是名字不同而已. int * p;     //p是变量的名字,int * 表示该变量p指向存放int类型变量的地址 //int * p; 不表示定义了一个变量为*p的整型变量,而是定义了一个int*类型的变量p //int *p; 应该这样理解,定义了一个变量名p,他的类型是int*类型,实际上就是存放了一个类型为int的地址 int i=3; //  i是整型,因此指向

C-Xcode真随机数的产生, 指针基础, 小技巧

小技巧1: 输出一个 % 输出一个%号(因为%是格式控制符的符号,所以输出是单独写一个%,系统会默认把%与其后面一个字符相结合当做格式控制符) —— %% 小技巧2: 自动整理代码 整理代码组合键 选中要对齐的代码 control + i 就会自动对齐 前提:代码没有语法错误 小技巧3: 产生一个真随机数 产生一个指定范围内的随机数: 比如需求:产生10-20的随机数 int num = arc4random_uniform(11) + 10 其他类推可得 公式 int num = arc4ra

没事抽空学——c语言指针操作基础概念

指针基础 理解指针的最佳方法是画图,学习使用基本指针,不要产生空指针. 存储控件分配 存储控件分配是指在内存预留空间的过程.就像一个虚拟菜谱一样,指针对应菜名,其所指的内存空间中的数据对应实际的菜. 数据集合与指针的算术运算 数据集合主要指结构和数组.指针的算术运算定义指针的计算规则.指向结构的指针对于建立数据结构起着至关重要的作用.在c中,数组和指针一样,都是以指针算术运算方法进行运算的. 作为函数参数的指针 通过这种方式,可以按照传递应用的方法传递函数参数.在c语言中,传递数组或大型结构时,

C语言--&gt;(十)指针基础

知识点: 1.指针基础 2.指针和函数(地址传递) ======================================= 指针是C中的一个重要的概念,也是C的一个重要特色.掌握指针的应用,可以使程序简洁.紧凑.高效. 指针的概念比较复杂,使用也比较灵活,因此初学时会常出错,我们要理解每一个概念的本质,多加练习,在实践中掌握它. 程序使用指针和没有没有使用指针的代码是两个档次. ========================================指针基础 [地址概念] 1.生

C# 基础概念

1.     面向对象的思想主要包括:继承 多态 封装 ●       封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部. ●       继承:子类拥有父类的所有数据和操作. ●       多态:一个程序中同名的不同方法共存的情况. 有两种形式的多态– 重载与重写. 2.     什么是装箱和拆箱 装箱(boxing)和拆箱(unboxing)机制使得在C#类型系统中,任何值类型.引用类型和object(对象)类型之间进行转换,这种转换称为绑定连接.简单地

js基础--javascript基础概念之变量与作用域

js基础--javascript基础概念之变量.作用域 javascript按照ECMA-262 的定义,变量与其他语言变量有所不同.js变量时松散的,不需要事先定义变量类型的.这使得他只是一个保存特定值的一个名称.变量与其数据类型可以在脚本的生命周期内改变. 还有明白几点: JavaScript的变量作用域是基于其特有的作用域链的,JavaScript没有块级作用域. 基本类型和引用类型的值 ECMAScript 的变量有两种不同的数据类型:分别是 基本数据类型值 和 引用类型值 : 基本数据