首页 > 其他分享 >C语言基础-1、指针

C语言基础-1、指针

时间:2024-03-16 16:33:06浏览次数:23  
标签:变量 int 基础 C语言 运算符 地址 数组 指针

一、取地址运算

  • 运算符&
  • scanf("%d",&i);中的&是获得变量的地址,它的操作对象必须是变量
  • &不能对没有地址的东西取地址:&(a+b),&(a++)

二、指针

  • 就是保存地址的变量
  • int i; int *p = &i;
  • int *p,q //p是一个指针,是一个指向int型的指针变量,q则是一个单纯的int型变量
    1、指针变量
  • 变量的值是内存的地址
  • 普通变量的值是实际的值
  • 指针变量的值是具有实际值的变量的存储地址
    2、作为参数的指针
  • void f(int *p);
  • 在被调用的时候就得到了某个变量的地址:int i = 0;f(&i);
  • 在函数里面就可以通过这个指针访问外面的那个i
    3、访问那个地址上的变量*
  • '*'是一个单目运算符,用来访问指针的值多表示的地址上的变量
  • 可以做右值也可以做左值
  • int k = *p;(相当于将p所指向的地址中所存储的数据赋值给了p)
  • *p = k+1;

三、指针与数组
1、传入函数的数组变成了什么

  • int f(int a[]);//实际上是指针,是指向数组a首地址的指针
  • 在函数里面对数组进行赋值操作,是可以成功的

2、数组变量是特殊的指针

  • 数组变量本身表达地址,所以
  • int a[10]; int *p=a;//无需用&取地址
  • 但是数组的单元表达的是变量,需要用&取地址
  • a == &a[0];

标签:变量,int,基础,C语言,运算符,地址,数组,指针
From: https://www.cnblogs.com/zwb1997/p/18077226

相关文章

  • Java基础面试题整理2024/3/13
    1、可以使用switch的数据类型Java5以前,switch(arg)表达式中,arg只能是byte、short、char、int。Java5之后引入了枚举类型,也可以是枚举类型。Java7开始引入了字符串类型。2、Java中的goto有什么作用goto是Java中的保留字,在目前版本的Java中没有使用。3、this与super的区......
  • 指针数组、数组指针、函数指针、指针函数
    数组指针:是指向数组的指针,它还是一个指针,只不过指向数组而已行指针定义形式:int(*p)[10]一定要加(),因为[]优先级高于*,所以必须要(*p)指一行,这里10为列的元素个数例1:二维数组数值为1-12,用行指针定义输出8例2:用行指针传参,2*3数组,输出第二行指针数组:实际是一个数组,长度是......
  • 函数指针数组(转移表)
    函数指针数组,首先是一个数组,其次其中存储的数据类型是函数指针,所以我们可以通过使用函数指针数组来调用不同的函数。接下来为大家展示他的基本使用方法(模拟计算器)函数指针数组结构   int(*arr[])(intx,inty)={NULL,Add,Sub,Mul,Div};其中NULL,Add,Sub,Mul,Div......
  • 深入理解指针2
    今天我们接着上期来继续深入学习指针。1.指针运算指针的基本运算有三种,分别是:•指针+-整数•指针-指针•指针的关系运算 1.1指针+-整数因为数组在内存中是连续存放的,只要知道第⼀个元素的地址,顺藤摸⽠就能找到后⾯的所有元素。 intarr[10]={1,2,3,4,5,6,7......
  • C语言-动态内存管理
    动态内存管理为什么存在动态内存分配动态内存函数介绍malloc和freecallocrealloc常见动态内存错误1对NULL指针的解引用操作2对动态开辟空间的越界访问3对非动态开辟内存使用free释放4使用free释放一块动态开辟内存的一部分5.对同一块动态内存多次释放6.动态开辟......
  • 关于难难难的指针(基础版)
     指针指针难难难!!!那么我们在对指针进行一个比较深入的理解之前,我们应该对指针所学的知识模块做一个基础的了解。内存和地址指针变量和地址指针的运算野指针assert断言指针访问数组一维数组传参二级指针指针数组冒泡排序字符指针变量数组指针变量函数指针变量函数指针数组转移......
  • aardio教程一) 基础语法-下
    条件判断语句使用if、elseif和else来对变量或表达式进行判断io.open()//打开控制台vara=1if(a==1){io.print("if")}elseif(a==11){io.print("elseif")}else{io.print("else")}也可以使用select对变量或表达式进行判断,也就是JavaScript中的switch语......
  • c语言程序设计——实验报告一
    c语言程序设计——实验报告一实验项目名称:实验一熟悉C语言运行环境实验项目类型:验证性实验日期:2023年3月14日一、实验目的下载安装Devc6.0程序。了解在该系统上如何进行编辑、编译、连接和运行一个C程序。通过运行简单的C程序了解C程序的特点。二、实验硬、软件环境W......
  • jQuery基础
    jQuery是JavaScript的第三方的模块组件(类库),可以利用jQuery来实现bootstrap的动态效果(目前bootstrapV5可以不依赖jQuery就能实现效果)首先需要下载jQuery,存放到pycharm的web中的static目录下引用方式和JavaScript一致,在body的尾部写入<scriptsrc=".../.../jQuery.min.j......
  • zookeeper基础学习之六: zookeeper java客户端curator
    简介Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。PatrixckHunt(Zookeeper)以一句“GuavaistoJavathatCuratortoZookeeper”给Curator予高度评......