Linux C语言指针,数组和函数

指针与数组:

一维数组:

	1.	char a[10];
		char *p;
		p = a;//p = &a[5];
	2.关系:{
		a[i] = *(a+i);
		a[3] = *(a+3) = p[3] = *(p+3) 
		数组名约等于指针,除了自增自减和赋值(数组名本质是地址常量,指针本质是地址变量)
			p++ ++p  --p  p++  p = p+1	
	}
	3.注意指针的当前位置
		通过自增、自减、赋值可以改变指针的当前位置
}

二维数组:

	二维数组由多个一维数组组成

行指针:

	二维数组名加一,跳一行数据,所以二维数组又交行地址
	一般形式:存储类型 数据类型 (*行指针名)[列数];
			int (*p)[3] --> 表明这个指针变量+1, 跳3个数据
	改变指针性质/降维:加*操作
			*p+1 --> 跳一个数据
			*(*p+1) -->取指针所指向变量的内容

指针数组:

区分:指针数组和数组指针:{
	一般形式:
		指针数组: int *p[5];
		数组指针: int (*q)[5];
	谁在后面本质就是什么

二级指针:{

一般形式:数据类型 ** 二级指针名;
	int **p;
保存一级指针的地址叫做二级指针

const型指针:

将变量常量化 
const int *p; 不能改变指针指向的数值
Int *const p = &m; 不能改变指针存的地址,初始化赋地址;

void 指针

可以存其他类型的地址,输出时强制类型转换;

函数:

定义:实现特定功能的代码模块
作用:接口重用
函数的一般形式:{
	【数据类型】【函数名】(形式参数说明)
	{
		语句序列;
		return (表达式);
	}
	1.数据类型:函数返回值的类型{
		无返回值:void(空类型)
		有返回值:基本数据类型 构造类型(struct) 地址...
		注意:有返回值函数调用可以单独写一行也可以不用,无返回值时必须单独写一行
	}
	2.函数名:遵循标识符的命名规则
	3.形式参数说明:简称形参,数据类型、变量名,有多个形参用逗号隔开
	4.语句序列:又叫函数体,可以没有函数体
	5.return语句:要和数据类型匹配,返回的是表达式,可以进行运算的
}
函数的说明:[数据类型][函数名](形式参数说明);
	注意:函数说明时,形参名可以不写,在main函数之上
		void fun(int a);
		void fun(int );
函数的使用 --> 函数调用
	哪里需要就在哪调用
	函数名(实际参数);
		fun(10);
		fun(a);
	实际参数简称实参,实参可以是某个变量或者表达式或者常量

函数传参:

	1.基本数据类型作为参数在函数之间传递:{
		复制传递(值传递)  地址传递  全局变量
		复制传递:{
			值传递
			将实参的值复制一份传递给形参,形参如何修改都不会影响实参
		}
		地址传递:{
			实参传地址 --> 形参为指针
			通过指针访问变量
		}
	}
	2.数组作为参数在函数之间传递:{
		复制传递(值传递)  地址传递  全局变量
		复制传递和地址传递实质是一样:形参都是指针,只是写法不一样
		注意:1.整型数组作为参数在函数之间传递,除了要传数组的首地址外,还需要传数组的长度
			  2.字符型数组作为参数在函数之间传递,可以不传字符串的长度
	}
}

}

函数和指针:

	int max();
	int (*p)() = &max;   //  函数指针   指向函数的指针!
	int *q();
	
	函数指针{   其本质是一个指针
		指向函数的指针!!!   它的所有操作和普通指针相同,只是指向一个函数!
		格式:   <数据类型>   (*<指针变量名>)(参数列表);
				数据类型:   指针指向的函数的 返回值的数据类型
				参数列表:  必须和指针要指向的函数 的参数列表相同
	}
	指针函数{    其本质是一个函数!!
		就是指 返回值是 指针(地址) 的函数  就叫指针函数
		格式:   <数据类型>   *<函数名>(参数列表);
				数据类型    *:   函数返回的是一个 数据类型 *(地址)
				参数列表: 	函数需要传入的参数
	}

1


  1. 错误请纠正 ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值