指针与数组笔记

数组与指针笔记
数组的引用方式:
void fun(int A[], int n);在函数定义中直接写出数组,不必写出具体个数。
  fun(Table, 4);在函数引用中可以直接使用数组名。

关于内存空间的访问方式:

通过变量名访问和通过地址访问。


指针和指针变量:
指针:内存地址,用于间接访问内存单元。
指针变量:用于存放地址的变量。
声明:
例如:
int i=3;
int *i_pointer=&i;
引用:
i=3;
*i_pointer=3;//i_pointer=2000

指针变量的初始化:
语法形式:数据类型 *指针名=初始地址;
例:int *pa=&a;

指针变量的赋值运算:
指针名=(带类型的)地址;
指针的声明、赋值与使用:
int *p;
int i;
p=&i;

不能声明void类型的变量,但是可以声明void类型的指针,void类型的指针可以指向任何类型的数据。


指针变量的算术运算:
指针p加上或者减去n,便是指针当前指向位置的前方或者后方的第n个数据的地址。
y=*px++=y=*(px++);//*和++优先级相同,自右向左运算。
向指针变量赋的值必须是地址常量或者变量,不能是普通整数,但是可以赋值整数0,表示空指针。


指向数组元素的指针:
声明和赋值:
int a[10];
int *pa;
pa=&a[0];或者pa=a;//指向地址
通过指针引用数组:
*pa=a[0];
*(pa+1)=a[1];
*(pa+i)=a[i];
a[i],*(pa+i),*(a+i),pa[i]都是等效的。


指针数组:
数组的元素是指针型;
例子:int *pa[2];//包括pa[0]和pa[1]两个指针。

指针数组的使用:
#include<iostream>
using namespace std;
int main()
{
	int line1[]={0,1,2};
	int line2[]={3,4,5};
	int line3[]={6,7,8};
	int *p_line[3]={line1,line2,line3};
	//另一种赋值方式: 
		/* 
		p_line[0]=line1;
		p_line[1]=line2;
		p_line[2]=line3;*/
			for(int i=0;i<3;i++)
			{
				for(int j=0;j<3;j++)
				
				{
					cout<<p_line[i][j]<<" ";//注意不是*p[i][j];*p[i]表示每个的第一个字节;
				}
				cout<<endl;

			}
			return 0;
 } 
输出结果:
0 1 2
3 4 5
6 7 8


二维数组的使用:
int arry[2][3]={0,1,2,3,4,5};
		for(int i=0;i<2;i++)
		{
			cout<<*(arry[i])<<endl;//结果为0,3
			cout<<*(arry+i)<<endl;//结果为0x6ffe00,地址
			cout<<arry[i]<<endl;//也为地址
			for(int j=0;j<3;j++)
			{
				cout<<*(*(arry+i)+j)<<" ";//结果为012345
				cout<<arry[i][j]<<" ";//结果为012345
			}
			cout<<endl;
		 } 
		 return 0;




以地址方式传递数据,可以用来返回函数处理结果。
实参是数组名时形参可以是指针。

题目:读入三个浮点数,将整数部分和小数部分分别输出
#include<iostream>
using namespace std;
int main()
{
void spoit(float x,int *n,float *m);
	float x,m;//输入的数
	int n;
	cin>>x;
	spoit(x,&n,&m);//注意输入的是地址&n,&m;

	 return 0;
 } 
 
 void spoit(float x,int *n,float *m)
 {
 	*n=(int )x;
 	*m=x-(float)*n;
 	cout<<*n<<" "<<*m<<endl;
 }


 输入:3.2
 输出:3 0.2


指针型函数:
当函数的返回值是地址时,函数为指针型函数。
声明方式:
数据类型 * 函数名();

指向函数的指针:
数据指针指向数据存储区,函数指针指向程序代码存储区。
声明方式:
数据类型 (*函数指针名)(参数列表);

函数指针:
举例:
#include <iostream>
using namespace std;
int main()
{
	void print(float x);
	void (*i_pointer)(float);
	i_pointer=print;
	i_pointer(3.14);
}
void print(float x)
{
	cout<<"调用指针函数输出:"<<x<<endl; 
}

输出:调用指针函数输出:3.14
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值