C语言指针实例

news/2024/6/3 7:25:53 标签: C

记录一些平常可能用到的指针例子

#include<stdio.h>

int main()
{
//------------------------------------- No.1
	char array[4] = "a01";
	
//------------------------------------- No.2
	char array1[3][4] = {"a01","a02","a03"},
		 array2[3][4] = {"b01","b02","b03"},
		 array3[3][4] = {"c01","c02","c03"};
	char *array4[4] = {"a01","a02","a03","a04"};		//定义了一个数组,包含4个char型指针(每个指针初始化一块静态内存) 【指针数组】 

//------------------------------------- No.3
	char array5[2][3][4] = {
						   {"a01","a02","a03"},
						   {"b01","b02","b03"}
						  };
	char *array6[3][4] = {							//定义了一个 3x4的矩阵,每个元素都是 char 型指针 
						 {"a01","a02","a03","a04"},
						 {"b01","b02","b03","b04"},
						 {"c01","c02","c03","c04"} 
						};
//------------------------------------- No.4
	char *p1=NULL,*p2=NULL,*p3=NULL,*p4=NULL;
	char **array7[4] = {&p1,&p2,&p3,&p4};
	char **array8[2][2] = {
						  {&p1,&p2},
						  {&p3,&p4}
						 };	
	
//------------------------------------- No.1
	puts(array);
	char *p;
	p = array;
	puts(p);			// a01
	p++;				// 指针p的步长为 1 
	puts(p);			// 01 

//------------------------------------- No.2	
	puts(array1[0]);		// a01	
	char (*p)[4];		//定义了一个 char型数组(长度为4)的指针  【数组指针】 
	p = array1;		
	puts(p[0]);			// a01
	p++;				// 指针p的步长为 4 
	puts(*p); 			// a02 		
	
	char *p;
	p = array1[1];
	puts(p);
//-----------------
	char (*p[3])[4];	//定义了三个 char 型数组(长度为4)的指针 / 定义了 char 型数组(长度为4)的指针的数组  【数组指针数组】 
	p[0] = array1;
	p[1] = array2;
	p[2] = array3;
	puts(p[1][2]);		// b03
//-----------------
	puts(array4[1]);		// a02
	char **p;			// char 型指针的指针 
	p = array4;
	puts(p[1]);			// a02
	p += 3;				// 指针p的步长为 4
	puts(*p);			// a04

//------------------------------------- No.3
	puts(array5[0][1]);	// a02	 
	char (*p)[3][4];	// char 型二维数组(3x4)的指针 
	p = array5;
	puts(p[0][0]);		// a01
	p++;
	puts((*p)[1]);		// b02
//	(*p)++;				// 错误,p是变量,可以进行赋值运算,而 (*p)是地址值,不可进行赋值运算 
	puts(*((*p)+2));	// b03
	
//-----------------	
	puts(array6[2][3]);	// c04
	char *(*p)[4];		// char型数组(长度为4)的指针的指针  【数组指针指针】 
	p = array6;
	puts(p[1][2]);		// b03

//------------------------------------- No.4
	char ***p;
	p = array7;
//-----------------	
	char **(*p)[2];
	p = array8;

	return 0;
}



http://www.niftyadmin.cn/n/756393.html

相关文章

想说爱你不容易 对象

想说爱你不容易 对象 最近几天一直和朋友在讨论关于对象 的问题&#xff0c;当然&#xff0c;在这里说的对象不是指男女朋友对象&#xff0c;是占据javascript整个的对象&#xff0c;毕竟js是面向对象的编程语言&#xff0c;那么首先我们要搞清楚什么是对象&#xff0c;不管你怎…

串口DMA方式发送接收

串口DMA方式收发 笔者使用的是STM32F407VET6&#xff0c;共包含6路串口&#xff0c;页尾处程序已将全部串口的DMA收发配置完成&#xff0c;本文仅以串口1为例进行讲解。&#xff08;查看代码可直接跳至第二节或页尾处下载&#xff09; 1 STM32F4 DMA 简介 DMA&#xff0c;全称…

【算法系列学习三】[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 反向bfs打表和康拓展开...

[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 这是一道经典的八数码问题。首先&#xff0c;简单介绍一下八数码问题&#xff1a; 八数码问题也称为九宫问题。在33的棋盘&#xff0c;摆有八个棋子&#xff0c;每个棋子上标有1至8的某一数字&#xff0c;不同棋子上标的数字不相同…

推导反向传播中的dZ=A - y

在吴恩达老师的反向传播课程中&#xff0c;涉及到如下公式&#xff1a; &#xff0c;在向量化后为 &#xff0c;下述为推导过程&#xff1a; 因为 &#xff0c;且&#xff0c;在最后一层网络中 故 在逻辑回归中&#xff0c;损失函数 故 又因为&#xff0c;在文章中所述的网络…

前向和反向传播公式推导

1 定义网络结构 假设某二分类问题的网络结构由如图1.1组成&#xff08;暂仅以2层网络举例&#xff0c;更高层数可依此类比&#xff09;&#xff0c;其输入的特征向量维数为n&#xff0c;隐藏层神经元个数为 &#xff0c;输出层神经元个数为&#xff08;由于是二分类问题&#…

采用DDS设计信号发生器

该信号发生器采用了直接数字频率合成技术(DDS)和计算机控制技术&#xff0c;选择美国Analog Devices公司的高度集成DDS芯片AD9851和AT89S52单片机作为控制器件&#xff0c;设计了一种基于DDS的程控信号发生器。用C语言进行了软件应用设计。实验结果表明&#xff0c;该信号发生器…

numpy数组与矩阵乘法

1 np.multiply()函数 功能&#xff1a;数组或矩阵的对应位置元素相乘。 数组 定义二维数组 A、B >>> A np.array([[0,1],[2,3]]) >>> A >>> array([[0, 1],[2, 3]])>>> B np.array([[1,2],[3,4]]) >>> B >>> array(…

localStorage使用总结

一、什么是localStorage、sessionStorage 在HTML5中&#xff0c;新加入了一个localStorage特性&#xff0c;这个特性主要是用来作为本地存储来使用的&#xff0c;解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k)&#xff0c;localStorage中一般浏览器支持的…