C语言的指针
C语言的指针:
C语言中指针的基本知识点:
运行下面代码
#include <stdio.h> int main () { int urn[5] = {100,200,300,400,500}; int *ptr1, *ptr2, *ptr3; ptr1 = urn; //直接把数组地址给指针ptr1 ptr2 = &urn[2]; //把数组第三个数值的地址给指针ptr2; printf("urn adress is : %p\n", urn); printf("ptr1 = %p, *ptr1 = %d ,&ptr1 = %p\n", ptr1, *ptr1, &ptr1); // 要注意指针指向的地址, 指针指向的地址的值, 指针的地址 之间的区别; ptr3 = ptr1 + 4; printf("adding an int to pointer:\n"); printf("ptr3 = %d", *ptr3); ptr1++; printf("value after ptr1++\n"); printf("ptr1 = %p, *ptr1 = %d ,&ptr1 = %p\n", ptr1, *ptr1, &ptr1); ptr2--; printf("value after ptr2--\n"); printf("ptr2 = %p, *ptr2 = %d ,&ptr2 = %p\n", ptr2, *ptr2, &ptr2); --ptr1;//ptr1恢复为初始值; ++ptr2;//ptr2恢复为初始值; printf("substracting on pointer from another: \n"); printf("ptr2 = %p, ptr1 = %p ; ptr2-ptr1 = %d\n", ptr2, ptr1, ptr2-ptr1); //指针指向地址的值的地址的减法; printf("substring an int from a pointer : \n"); printf("ptr3 = %p, ptr3-2 = %p ,*(ptr3-2) = %d\n", ptr3, ptr3-2, *(ptr3-2)); return 0; }
下面的列表描述了可对指针变量执行的基本操作:
1:赋值, 可以把一个地址赋值给一个指针 , 通常使用< ptr = 数组名, 或者ptr = &变量值>
2:求值或者取值, 使用*可以取出指针在内存中的值;
3:取指针地址, 使用&可以获取指针的内存地址;
4:把一个整数加给指针, 根据指针指向的类型 , 当前的指针向后或者向前移动 , ptr+4或者&urn[4]
5:从指针中减去一个整数 , 指针所指向的内存地址发生改变;
6:求差值:两个指针之间的差值, 为两个指针的距离;
注意:这里有两种减法, 可以用一个指针减去一个整数获取到另外一个指针, 或者用指针减去指针得到另外一个整数;
C语言的指针:
变量指针和常量指针:
数组就是一个常量指针, 无法被修改;
变量指针,通过*声明的指针都是变量指针, 指针可以被随意修改;
函数指针:
运行下面代码
int (*foo[])(int) 数组里面允许有函数指针(数组foo里存储的是指向函数的指针) int foo[][] 数组里面允许有其他数组 char * (*fun1)(char * p1,char * p2); 函数为fun1的指针, 返回值为char*的
C++的知识点:指针,链表,类, 模版字符串
eof
本文作者:方方和圆圆
本文链接:https://www.cnblogs.com/diligenceday/p/5740846.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2014-11-06 BACKBONE源代码解析