首页 > 其他分享 >C语言的指针

C语言的指针

时间:2023-06-10 11:57:27浏览次数:41  
标签:变量 int C语言 pB 地址 pA 指针

1.初步理解指针
C语言的指针指的是一个地址,也是内存单元的编号,它存储的是内存地址.

#include <stdio.h>
int main(){
  //初始化一个变量a的值
  int a=10;
  //定义一个指针p指向变量a的地址,int*表示这个变量存放的是int类型的地址
  int* p=&a;
  //打印这个指针所指向的变量的值
  printf("%d",*p);
  return 0;
}

如何理解指针指向一个变量?
如果一个指针保存了一个普通变量的地址,我们就说这个指针指向了这个变量,
如上述代码中:
int a=10;
int* p=&a;
此时*p=a;这句话的理解是*p完全等同于a
*p最准确的解释是:*p表示的是以p的内容为地址的变量

指针和指针变量的关系
指针表示的是一个常量,它就是一个地址.
指针变量就是一个变量,它就是一个保存地址的变量.
我们通常所说的指针就是指针变量.

附: *代表什么含义?
*有三层含义:
1.表示乘法
2.声明指针,表示这是一个指针变量,如上述代码中提到的int* p=&a;
3.指针运算符,如前面指针p已声明,则*p就表示为以p的内容为地址的变量.

指针的作用:
1.快速地传递数据,减少内存的耗用.
2.直接访问硬件.
3.使函数返回一个以上的值.这一点,将在下列代码中有所体现.

#include <stdio.h>
void change(int* pA,int* pB){
  //修改pA,pB所指向的变量(即A和B)的值为15
  *pA=15;
  *pB=15;
}
int main(){
  int a=10;
  int b=20;
  int* pA=&a;
  int* pB=&b;
  //传入pA,pB指针
  change(pA,pB);
  //输出a和b的值
  printf("a=%d,b=%d",a,b);
  return 0;
}

通过以上代码我们也知道了如何通过被调函数修改主函数普通变量的值:
1.实参填入普通变量的地址.
2.形参必须为指针变量.
3.在被调函数中通过
*指针=... 来修改主函数中普通变量的值

标签:变量,int,C语言,pB,地址,pA,指针
From: https://www.cnblogs.com/heda/p/17470860.html

相关文章

  • 初识C语言
       通过对C语言的基础知识的简单介绍,对C语言有大概的了解1.什么是C语言    首先我们常说的语言是人与人交流的方式,而C语言是人与计算机交流的一种计算机语言。人----------------------人        人------------------计算机  汉语,英语,法语...  ......
  • C++面试八股文:指针占用多少个字节?
    C++面试八股文:指针占用多少个字节?某日小二参加XXX科技公司的C++工程师开发岗位4面:面试官:memset、memcpy和strcpy的区别是什么?小二:memset用于将一块内存设置为特定的值,memcpy用于将一块内存从一个位置复制到另一个位置,strcpy用于将一个字符串从一个位置复制到另一个位......
  • C语言编程—强制类型转换
    强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个long类型的值到一个简单的整型中,您需要把long类型强制转换为int类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型,如下所示:(type_name)expression请看下面的实例,使用强......
  • C语言循环打印空心正方形代码实现
    #include<stdio.h>intmain(){intw,i,j;printf("输入正方形边长\n");scanf_s("%d",&w);if(w<=0){printf("正方形边长要大于0\n");return0;}//外层循环控制行数......
  • C语言学习一
    初识C在C中内存地址<==>指针地址intmain(){intnumber=100;//实际是number(int)=100,number是别名returnNULL;}main函数进栈,return出栈注意:&number读取内存地址*(&number)取出number地址对应的值:100intmain(){intnumber=100;//实际变量的声明int*in......
  • 前端学习C语言 - 开篇
    前端学习C语言-开篇前端学习C语言有很多理由:工作、兴趣或其他。C语言几个常见的使用场景:操作系统开发:Linux操作系统的内核就是主要由C语言编写的。其他操作系统也广泛使用C语言进行核心部分的开发。系统级开发和嵌入式编程:C语言具有强大的底层控制能力和高效的代码......
  • 在 c++ 中删除一个 NULL pointer (空指针)
    @is21201.在c++中删除一个NULLpointer(空指针)是安全的2.标准中相关内容如下:"Ineitheralternative,ifthevalueoftheoperandofdeleteisthenullpointertheoperationhasnoeffect."3.一个有用的宏@is2120#definemy_delete(x){deletex;x=NULL;} 4......
  • boost库之智能指针
    一、boost::scoped_ptrboost::scoped_ptr是Boost库中的一个智能指针类,用于管理动态分配的对象,并确保在超出作用域时自动释放资源。boost::scoped_ptr提供了一种简单而安全的方式来管理对象的生命周期。它的行为类似于C++原始指针,但它负责在其生命周期结束时自动调用delete来释放......
  • 下标,指针,迭代器
    1//使用下标遍历数组中的元素2inta[4]={1,2,3,4};3for(size_ti=0;i<4;++i)4{5cout<<a[i]<<endl;6}1//使用下标任意访问数组中某个元素2inta[4]={1,2,3,4};3cout<<a[1]<<endl;1//使用指针访问遍历数组中......
  • 菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序
    step1:下载安装Dev-C++已经安装了Dev-C++或系统中的可以跳过这步。去官网下载Dev-C++。我昨天下载,发现有点慢,所以我把安装文件放到百度网盘了,供大家下载,下载链接为:http://pan.baidu.com/s/1pLPenDx。开始安装,记住安装位置。在安装时只能选择英文,安装完成后,第一次启动时可以选择......