首页 > 其他分享 >【C语言_16】初步了解指针

【C语言_16】初步了解指针

时间:2022-10-08 13:06:18浏览次数:46  
标签:16 int C语言 pc 地址 printf pn 指针

前言

每一个变量都有一个内存位置,每一个内存位置都定义了,可使用 &(取地址运算符) 运算符访问的地址,它表示了在内存中的一个地址。

&的用法:

&数据对象
//获取数据对象首地址和所需存储空间大小

1.什么是指针?​

指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。

2.如何声明指针?

//目标数据类型* 变量名
//目标数据类型*变量名
//目标数据类型 *变量名
int n;
int* pn=&n;
//int*pn=&n;
//int *pn=&n;
//pn用于保存变量n的首地址和所需空间大小
//我们把pn称作n的指针;或者pn指向n.

3.探究指针输出的值

  • 指针通过值来表示目标数据对象的首地址
  • 指针的大小在32位平台是4字节,在64位平台是8字节
#include<stdio.h>
int main()
{
int n1;
int n2;
int n3;
int n4;
int* pn1=&n1;
int* pn2=&n2;
int* pn3=&n3;
int* pn4=&n4;
printf("pn1=%u\n",pn1);
printf("pn2=%u\n",pn2);
printf("pn3=%u\n",pn3);
printf("pn4=%u\n",pn4);
return 0;
}

运行结果:为n1到n4的首地址

【C语言_16】初步了解指针_强制转换指针类型

4.如何使用指针?

*指针运算符:*指针   根据指针中存储的首地址和空间大小找到目标数据对象

1.查询目标数据对象的值

#include<stdio.h>
int main()
{
int n=666;
int* pn=&n;
printf("pn=%u\n",pn);
printf("*pn=%d\n",*pn);
return 0;
}

运行结果:

【C语言_16】初步了解指针_声明指针_02

2.修改目标数据对象的值

#include<stdio.h>
int main()
{
int n=0;
int* pn=&n;
char c=0;
char* pc=&c;
//通过指针修改目标数据对象的值
*pn=666;
*pc='A';

printf("pn=%u\n",pn);
printf("n=%d\n",n);
printf("pc=%u\n",pc);
printf("c=%c\n",c);
return 0;
}

运行结果:

【C语言_16】初步了解指针_使用指针_03

5.强制转换指针类型

#include<stdio.h>
int main()
{
int n=65;
int* pn=&n;

char* pc=(char *)pn;

printf("pn=%u\n",pn);
printf("pc=%u\n",pc);
printf("*pn=%d\n",*pn);
printf("*pc=%c\n",*pc);
return 0;
}

运行结果:

【C语言_16】初步了解指针_强制转换指针类型_04

标签:16,int,C语言,pc,地址,printf,pn,指针
From: https://blog.51cto.com/u_15420562/5737218

相关文章

  • 指针与整型数组
    1.输入10个整数,将其中最小的数与第一个数对换,把最大的一个数与最后一个数对换。#include<stdio.h>intmain(){voidin_num(int*x);voidout_num(int*x);......
  • 【我开了C语言的金手指】三.数组
    (一)一维数组的创建和初始化1.数组的创建数组是一组相同类型元素的集合,其创建方式为:​​type_tarr_name[const_n]​​注:type_t是数组类型const_n是一个常量表达式,用来指定数......
  • 指针与函数
    1.通过指针变量访问整型变量#include<stdio.h>intmain(){inta,b;int*p1,*p2;scanf("a=%d,b=%d",&a,&b);p1=&a;p2=&b;printf("*p1=......
  • day16 104,222
    104.二叉树的最大深度classSolution{//层序遍历publicintmaxDepth(TreeNoderoot){if(root==null){return0;}Qu......
  • C语言每日一题——第十一天
    第十一天还记得在第三天写的斐波那契数列程序吗?小明最初想用这个函数作为随机数生成器的。今天,小明决定重新拾起这个函数,用于生成随机数……输入程序在运行时通过getcha......
  • C语言:随机出题
    #include<stdio.h>//为小学一年级学生随机出10道题,加法或减法随机出现,保证涉及到的数在0-9之间,结果不能出现负数//程序运行输入结果后提示对或错,最后并统计做对了几道......
  • 3.PIC16F877驱动LCD1602
    1.LCD1602的读写时序手头上的模块是酱紫的 对应的头文件代码(在PIC16F877上用的)/***********USERFUNCTIONS***********1.Lcd8_Init()......
  • Pjudge #21688. 图同构
    题面传送门我们考虑这个奇怪的交换方式有没有什么性质。如果我们将每个点与其点权捆绑,可以发现这个操作方法就是每次交换使点权取反。于是可以对每个子图分类讨论:如果......
  • 实现进制转化伪代码的C语言转化
    #include<stdio.h>intmain(){  intx,p;  printf("Enterthenewbase");  scanf("%d",&p);  printf("Enterthenumbertobeconverted"); ......
  • 【C语言】初始数组
    ......