指针笔记小结(03.06)

1.基础知识

&取地址运算符,*指针运算符

void swap(int *p1,int *p2){
  int temp;
  temp=*p1;
  *p1=*p2;
  *p2=temp;
}

上面的代码如果temp变为temp则是错误的,对temp赋值相当于对一个未知的存储单元赋值。 下面的代码无法完成交换

void swap(int *p1,int *p2){
  int *p;
  p=p1;
  p1=p2;
  p2=p;
}

无法完成的交换的原因是:这里的数据传递是值传递

2.利用指针引用数组

所谓数组元素的指针就是数组元素的地址。

int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p;
p=&a[0];//不可以写成*p=&a[0],但可以写成int *p=&a[0]

p=&a[0]等价于p=a,p的值是a[0]的地址。 如果指针变量p1和p2都指向同一数组中的元素,如执行p2-p1,结果是p2-p1的值(两地址之差)除以数组元素的长度。但两个地址相加是没有意义的,如p1+p2;

3.C语言之int *f()、int(*f)()、int *a[]、int (*a)[] 区别小记

int *f()表示这个函数的功能是返回一个地址。

int(*f)()表示这是一个函数的指针。它要指向一个函数才能有用,指向一个函数之后可以用它来代替该函数。之后使用这个指针相当于使用该函数。(int(*p)[10]是一个数组指针,p是一个指针指向 int[10] 数组)

int a[]是一个指针数组,表示数组中的每一个元素都是一个指针,可以指向一个int类型的数值。( 如int p[10], 是一个指针数组,p是一个数组,数组每个元素是个指向int型的指针。)

int (*a)[]这是一个指向多维数组的指针变量。

[]的结合性大于*,(p)[10]表示p指向一个大小为10的数组,且每个数组的元素为一个指针。((p)[10])是一个函数指针,该函数的参数是int,返回值是int。

指针函数:当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。 声明格式为:类型说明符 *函数名(参数)。比如: int * foo(int,int); 函数指针:指向函数的指针包含了函数的地址,可以通过它来调用函数。 声明格式:类型说明符 (*函数名)(参数)。比如:void (*fptr)();

全部评论

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务