C语言 --- 高级指针

1. 指针赋值: C语言允许使用赋值运算进行指针的赋值,前提是两个指针具有相同的类型.

                int i,*p,*q;

                p = &i;

                q = p; 此时p和q存储的都是i的地址.

                 *p = 1; 此时改变i的值为1;

                 *q = 2; 此时改变i的值为2;

2. 指针作为函数的参数,可以实现在函数内部改变函数外部变量的值

                               传址,而不是传值

                               int *p = &a;如果出现*的地方 前面有类型修饰符(例如int),此时*仅仅起到标示作用,告诉编译器我是一个指针.

                               *p = 20;如果出现*的地方,前面没有类型修饰符,此时*代表取值操作符,它会把指针指向的区域中的内容取出来或者赋值.         

           函数传参的过程中: 把实际参数的值拷贝到形式参数

时间: 2024-11-05 22:01:00

C语言 --- 高级指针的相关文章

C语言--- 高级指针2(结构体指针,数组作为函数参数)

一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针     结构体:     typedef  struct stu{                          char name[20];                          char sex;                          int age;                    }Student;     Student stu1 = {"zhangsan",'m',23};  

C语言 函数指针的应用

简单的介绍下C语言函数指针的用法. 函数指针的声明: char (* FunPtr)(char); 或者char (* FunPtr)(char ch);  (声明类型个形参类型根据实际情况更改) 例: 1 #include"stdio.h" 2 3 char myFun(char ch) 4 { 5 printf("myFun is called, your char is %c.\n",ch); 6 return 'w'; 7 } 8 9 void main()

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

我是黑马-----iosC语言高级第一部分

C语言的构造类型: 构造类型是由若干个成员组成的,每个成员都是一个基本数据类型. 构造数据类型可以嵌套,构造里面还有构造. 结构体可以作为函数的参数来传递,方便了书写. 定义结构体的方法:  1 Struts 结构名{ 2 成员列表 3 };  声明列子: 1 Struts student{ 2 int num; 3 char name; 4 char sex; 5 int score; 6 }; 定义:  1 Struts student stu:  结构数组,改数组每个元素都是一个相同类型的

C语言的指针变量

C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: int a = 12; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分配的,对用户是透明的不用关心 */ 指针变量存储的是变量的地址, 比如: int a = 12 , *b; b = &a; /*如上,定义了一个整型变量a并赋值12,一个整型指针变量b 然后 用 & 取值运算符 取到变量a的地址空间值,存储到指针变量b中 此时变量b中存储的是变量a中的地址

黑 马 程 序 员_视频学习总结<c语言>----03 指针

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.什么是指针? 用来存放变量地址的变量,就称为"指针变量". 二.指针的定义 一般形式:类名标识符  *指针变量名; int *p; float *q; "*"是一个说明符,用来说明这个变量是个指针变量,是不能省略的,但它不属于变量名的一部分 前面的类型标识符表示指针变量所指向的变量的类型,而且只能指向这种类型的

C语言的指针移位问题

先贴代码 #include <stdio.h> int main(void) { double a[]={1.1,2.2,3.3}; unsigned int b,c,d; b=&a[0]+1;c=&a[1];d=&a[2]; printf("diff -- %d", c-b); return 0; } 执行结果是 diff -- 0 这是32位的代码,所以可以用unsigned int类型来储存地址位. 由于a[0]是double类型,所以&

c语言函数指针实例

如果使用typedef 是这样的 //可以把一个小写字母变成大写 //char (*pFun)(char); typedef char (*PTRFUN)(char); PTRFUN pFun; char glFun(char a){ return a & 223;} void print(int a,PTRFUN call){ cout<<call(a)<<endl;}void main() { pFun = glFun; print('a',pFun);} 如果不使用t

go语言之指针

数组 Arrays 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值.在初始化后长度是固定的,无法修改其长度.当作为方法的入参传入时将复制一份数组而不是引用同一指针.数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度. 在开始前先了解指针与地址: Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务,变量是一种使用方便的占位符,用于引用计算机内存地址,Go 语言的取地址符是 &,放到一个变量前使