1.指针和指针变量的区别
(1)我们在定义一个变量a时,变量a本质上代表一个存储单元,CPU通过该存储单元的地址访问该存储单元中的数据。
所以a即会表示存储单元的地址,也代表存储单元中的数据。
(2)指针和指针变量的区别
指针:系统为每一个内存单元分配一个地址值,C/C++把这个地址值称为“指针”.如:int i= 5;则存放变量i的内存单元的地址 &i 被称为指针。地址(常性值)。
指针变量:指针变量是存放前指针的变量,也可以定义为指针变量是存放变量所占内存空间首地址的变量。所以说,指针变量就是存放指针的变量。值。
2.定义指针变量时,类型对指针变量起两个作用
(1)解析存储单元大小
(2)指针变量加1能力
3.指针
(1)解引用的值
(2) 自身的值
4.对指针指向的理解

#include<stdio.h>
#include<stdlib.h>
void fun(int* p)
{int a = 200;*p = 100;//(*p即为x本身)p = &a;//
}
int main()
{int x = 0;int* s = &x;fun(s);//p指向的地址,s和p都为指针,p存放的是x的地址printf("%d %d \n", x, *s);//x=100,*s=100;return 0;
}

5.指针分类

#include<stdio.h>
#include<stdlib.h>
int a = 10, b = 20;
int* p1=&a;//普通指针const int* p2 = &a;
int const* p3 = &a;//常性指针int* const p4 = &a;//自身为常性的指针const int* const p5 = &a;//指向和自身都为常性的指针

6.循环数组移动(将元素左移一位)

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void Print_Ar(const int* br, int n)
{if (br == nullptr || n < 1)return;for (int i = 0; i < n; ++i){printf("%d ",br[i]);}printf("\n");
}
void Left_Move_Array(int* br, int n)
{if (br == nullptr || n < 1)return;int tmp = br[0];for (int i = 0; i < n - 1; ++i){br[i] = br[i + 1];}br[n - 1] = tmp;
}//1.定义变量,把0下标的值放进去;2.利用循环语句,将数据进行左移操作3.将第一个元素放在最后面,完成左移
int main()
{const int n = 10;int ar[n] = { 12,23,34,45,56,67,78,89,90,100 };Print_Ar(ar, n);Left_Move_Array(ar, n);Print_Ar(ar, n);
}

7.将元素右移一位

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void Print_Ar(const int* br, int n)
{if (br == nullptr || n < 1)return;for (int i = 0; i < n; ++i){printf("%d ",br[i]);}printf("\n");
}
void Left_Move_Array(int* br, int n)
{if (br == nullptr || n < 1)return;int tmp = br[0];for (int i = 0; i < n - 1; ++i){br[i] = br[i + 1];}br[n - 1] = tmp;
}//1.定义变量,把0下标的值放进去;2.利用循环语句,将数据进行左移操作3.将第一个元素放在最后面,完成左移
void Right_Move_Array(int* br, int n)
{if (br == nullptr || n < 1)return;int tmp = br[n - 1];for (int i = 2; i < n; ++i){br[i] = br[i - 1];}br[0] = tmp;
}//程序有问题
int main()
{const int n = 10;int ar[n] = { 12,23,34,45,56,67,78,89,90,100 };Print_Ar(ar, n);Right_Move_Array(ar, n);Print_Ar(ar, n);
}

C语言:指针与指针变量相关推荐

  1. c语言指针访问 静态变量_使用C中的指针访问变量的值

    c语言指针访问 静态变量 As we know that a pointer is a special type of variable that is used to store the memor ...

  2. c语言位向量机伞_一文读懂C语言精华-指针变量和指向指针的指针

    1978年贝尔实验室正式发表C语言,受到众多IT从业者的热捧,即使41年过去了,C语言仍然牢牢占据最受欢迎编程语言前二的位置,许多人的程序开发之路也是从C语言开始的. 编程语言受欢迎排名 C语言简洁紧 ...

  3. 翁恺老师C语言学习笔记(十)指针_指针变量就是记录地址的变量

    指针变量就是记录地址的变量 scanf函数 · 如果能够将取得的变量的地址传递给一个函数,能否通过这个地址在那个函数内访问这个变量 · scanf("%d", &i) · ...

  4. c语言 乘号 指针 避免,C语言指针篇(一)指针与指针变量

    指针 1. 什么是指针? 2. 指针可不可怕? 3. 指针好不好玩? 4. 怎么学好指针? C语言是跟内存打交道的语言,指针就是内存地址.指针无处不在,指针并不可怕,相反,等你学到一定程度后,会有一种 ...

  5. c语言两个指针变量不可以,2.C语言指针变量

    # 2.C语言指针变量 变量的指针就是变量的地址.存放变量地址的变量是指针变量.即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量.因此,一个指针变量的值就是某个变量的地址或称为某变量的指针 ...

  6. 一文搞懂C语言如何用指针来代替变量和数组进行数据的存储

      众所周知,指针的用法最常见的无外乎两种,一种是用指针来指向变量的内存地址,通过操控指针进而可以间接的操控变量.另外一种是把指针当成变量来使用,像变量一样可以存储数据.数组也是类似的道理,因为数组实 ...

  7. C语言 数组的指针和指向数组的指针变量

    一.回顾二维数组和多维数组的概念 int a[3][4];  //二维数组 int a[2][3]4];  //多维数组 二.指向多维数组的指针和指针变量的探究 可以把a看成是一个一维数组,这个一维数 ...

  8. 指针与指针变量的区别(C语言)

    提示:本章主要谈及个人对C语言指针和指针变量的理解 文章目录 前言 一.指针是什么? 二.指针变量是什么? 三.知识拓展 总结 前言 指针是C语言中的一个很重要的concept,掌握指针的应用,可以使 ...

  9. C语言指针与指针变量

    目录 一.指针与指针变量 1.地址 2.指针与指针变量的介绍 二.指针变量的定义与引用 1.变量的存取方法 2.指针变量的定义 3.指针变量的赋值 4.指针变量的引用 一.指针与指针变量 1.地址 在 ...

  10. c语言指针赋值指针变量赋值吗,C语言_指针变量的赋值与运算,很详细

    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值.未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址, 决不能赋予任何其它数据 ...

最新文章

  1. 怎么看电脑电源多少w_电脑电源供电不足会怎么样 电脑电源供电不足坏处介绍【详解】...
  2. ubuntu 为用户添加组
  3. 提高IT运维综合管理能力,实现业务服务管理
  4. 使用说明 vector_Paddlepaddle学习|Ubuntu环境使用 Mahout 进行朴素贝叶斯模型的训练和测试...
  5. Scala 隐式(implicit)详解
  6. java内存泄漏案例_寻找内存泄漏:一个案例研究
  7. c#中的BeginInvoke和EndEndInvoke 摘要
  8. html5+shim脚本,HTML5探秘:用requestAnimationFrame优化Web动画
  9. 《移动App测试的22条军规》—App测试综合案例分析23.4节测试微信App的手势操作...
  10. 使用 jQuery Mobile 与 HTML5 开发 Web App (五) —— jQuery Mobile 表单下
  11. Eclipse下载及安装hibernate插件
  12. python模块的发布_(转载)Python中模块的发布与安装
  13. 软件工程师的技能知识图谱0.2
  14. Oracle EBS二次开发简介
  15. android 计步功能原理,Android开发——计步功能
  16. PHP开发环境准备,PHPWAMP使用,图文教程
  17. 2022年中国数字孪生城市市场分析:孪生城市产业经济全域协作
  18. 五子棋游戏开发六子棋游戏开发
  19. Java毕业设计:人民医院体检预约系统(java+springboot+vue+mysql)
  20. 2.8 STM32_按键扫描_安富莱

热门文章

  1. 关键对话:如何高效能沟通
  2. 基于STC8G2K64S4单片机通过I2C硬件控制OLED屏幕
  3. 【Algorithm · fourth edition】均值、方差的递推公式
  4. Windows(IA-32e模式)系统调用
  5. RAID5破坏的数据恢复流程和思考
  6. win7 下使用超级终端
  7. 2021年中国网络零售行业发展现状及行业发展趋势分析[图]
  8. edu教育邮箱申请注册资讯平台是什么?
  9. Python中numpy.ix_ 的用法
  10. 华为鸿蒙电视怎么安装app,简单便捷!实测教你华为智慧屏怎么样用USB安装APP