首页 > 其他分享 >c语言指针操作

c语言指针操作

时间:2023-08-25 11:03:14浏览次数:30  
标签:语言 指向 int age 地址 操作 指针 变量


指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:
type *var-name;

在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
NULL 指针是一个定义在标准库中的值为零的常量

可以对指针进行四种算术运算:++、--、+、-。
假设 ptr 是一个指向地址 1000 的整型指针,是一个 32 位的整数,让我们对该指针执行下列的算术运算:
ptr++
在执行完上述的运算之后,ptr 将指向位置 1004,因为 ptr 每增加一次,它都将指向下一个整数位置,即当前位置往后移 4 个字节(一个整型变量占用4字节)。
如果 ptr 指向一个地址为 1000 的字符(char占用1个字节),上面的运算会导致指针指向位置 1001,因为下一个字符位置是在 1001。

#include <stdio.h>


int main(){
	int age=20;//实际变量
	int *p_age;//指针变量声明


	p_age=&age;


	printf("变量age的内存地址:%x\n",&age);


	printf("p_age存储的地址:%x\n",p_age);


	printf("指针p_age的值:%d\n",*p_age);


	return 0;
}
变量age的内存地址:18ff44
p_age存储的地址:18ff44
指针p_age的值:20



指针数组:让数组存储指向 int 或 char 或其他数据类型的指针

#include <stdio.h>

const  int MAX=3;

int main(){
	int age[]={1,5,20};
	int i,*p_age[MAX];

	for(i=0;i<MAX;i++){
		p_age[i]=&age[i];
	}

	for(i=0;i<MAX;i++){
		printf("age[%d]的值:%d\n",i,*p_age[i]);
	}
	

	return 0;
}
age[0]的值:1
age[1]的值:5
age[2]的值:20



指针的指针:

指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置

#include <stdio.h>

int main(){
	int age;
	int *p_age;
	int **pp_age;

	age=100;

	p_age=&age;//获取age的地址

	pp_age=&p_age;//使用&获取p_age的地址

	printf("age的值:%d\n",age);
	printf("指针*p_age的值:%d\n",*p_age);
	printf("指针**pp_age的值:%d\n",**pp_age);
}
age的值:100
指针*p_age的值:100
指针**pp_age的值:100








标签:语言,指向,int,age,地址,操作,指针,变量
From: https://blog.51cto.com/u_2148212/7227509

相关文章

  • python3的文件操作
    python的文件操作和php的文件很类似file对象使用open函数来创建,open的参数:r表示读,w写数据,在写之前先清空文件内容,a打开并附加内容,打开文件之后记得关闭下表列出了file对象常用的函数:序号方法及描述file.close()关闭文件。关闭后文件不能再进行读写操作。file.flush()......
  • 【校招VIP】java语言考点之双亲委派模型
    考点介绍:双亲委派是校招面试中的高频考点之一。双亲委派机制定义:当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载。只有父加载器无法加载这个类的时候,才会由当前这个加载器来负责类的加载......一、考点题目1、为什......
  • R语言之 dplyr 包
    文章和代码已经归档至【Github仓库:<https://github.com/timerring/dive-into-AI>】或者公众号【AIShareLab】回复R语言也可获取。这个包以一种统一的规范更高效地处理数据框。dplyr包里处理数据框的所有函数的第一个参数都是数据框名。下面以MASS包里的birthwt数据集为例,介......
  • QT实现多语言详细步骤
    1、设置.pro项目配置TRANSLATIONS+=Language_zh_CN.ts\Language_en_CN.tsLanguage_zh_CN代表中文,Language_en_CN代表英文2、设计相关界面,如果要翻译程序中的文本,需要将程序中的文本进行修改Qttr()和qsTr()标记待翻译字符串3、生成相关的.ts文件在项目目录下自动生成相关的.t......
  • Go语言中的切片nil
    这句话是关于Go语言中数据结构的空值检查方法。在Go语言中,有些数据类型(如切片、映射和通道)在其零值状态下并不是nil。对于这些类型,即使你分配了一个新的空结构(例如,一个没有元素的切片),它们的内部指针可能不为nil。举一个例子,当我们声明一个新的空切片时:vars[]ints的零......
  • .bat命令执行删除操作
    REM快速删除当前目录中所有的.rar后缀文件echooffREM检查是否存在以.rar为后缀的文件dir/B*.rar>nul2>&1if%errorlevel%equ0(REM存在以.rar为后缀的文件,删除它们del/Q*.rarechodeleteallrarfilesuccess)else(echorarfile......
  • 常用代码段-nms操作
    非极大值抑制(Non-MaximumSuppression,NMS)是一种常用于目标检测和计算机视觉任务的技术,用于从重叠的检测框中选择最佳的候选框。以下是使用PyTorch实现标准的NMS算法的示例代码:importtorchdefnms(boxes,scores,iou_threshold):sorted_indices=scores.argsort(des......
  • 讲解pytorch的tensor没有移除某个元素的操作
    在PyTorch中,要从一个Tensor中移除一个元素,您需要使用索引操作来选择保留的元素,然后重新创建一个新的Tensor。由于PyTorch的Tensor是不可变的,所以无法直接在原Tensor上移除元素。下面是一个示例,展示了如何从一个PyTorchTensor中移除指定位置的元素:importtorch#......
  • Go语言数组的使用
    目录1.数组的使用1.1数组的定义方式1:1.2数组的定义方式2:1.3数组的定义方式3:1.4数组的定义方式4:1.5数组的遍历1:1.6数组的遍历2:1.7数组的遍历3:1.8数组的遍历4:1.数组的使用1.1数组的定义方式1:packagemainimport"fmt"funcmain(){ vararr[3]string arr[0]="A......
  • Go语言切片的使用
    目录2.切片的使用2.1切片的定义方式1:2.2切片的定义方式2:2.3切片的定义方式3:2.4切片的定义方式4:2.5切片的定义方式5:2.6切片的定义方式6:遍历方式和数组差不多2.切片的使用2.1切片的定义方式1:packagemainimport"fmt"funcmain(){ varslice[]string slice=appe......