指针学习
1、 指针是什么?
指针表示变量的地址,例如ptr=& pooh
,其中&
取地址符取出pooh
变量的地址然后赋值给ptr
,此时ptr
可看成指针变量,指向pooh变量
2、指针变量的声明和赋值
int *pi,
char *pc,
float *pf
3、取地址运算符 和 解引用运算符
(1)取地址运算符&取出变量地址,例如:
#include <stdio.h> int main(void) { int age; printf("Please input your age"); scanf("%d",&age); printf("%d",age); return 0; }
(2)取地址运算符&取出变量地址,例如:
#include <stdio.h> int main(void) { int age; int *pointer1; printf("Please input your age\n"); scanf("%d", &age); pointer1 = &age; printf("%d", *pointer1); return 0; }
4. 利用指针实现交换函数的问题(形参地址传递)
#include <stdio.h> void intExchange(int* m, int* n); int main(void) { int x = 10; int y = 20; int* pointer1 = &x; int* pointer2 = &y; intExchange(pointer1, pointer2); printf("%d\n%d\n", *pointer1, *pointer2); } void intExchange(int* m, int* n) { int temp; temp = *m; *m = *n; *n = temp; }
5、数组和指针
(1)数组名是数组首元素的地址,例如数组array的数组名 array==array[0]
(2)在C语言中,指针+1
表示的是增加指针类型对应的字节数
#include <stdio.h> int main(void) { int array[10]; printf("array数组的首元素地址为:%p\n", array); //数组首元素的地址值 printf("array数组的首元素地址为:%p\n", &array[0]); //数组首元素的地址值 printf("array数组的第二个元素的地址为 :%p\n", array + 1); //数组第二个元素的地址值 printf("array数组的第二个元素的地址为 :%p\n", &array[1]); //数组第二个元素的地址值 }
(3)数组中,指针的解引用符
*(array+1)=array[1] //表示第二个数组元素的值 *array + 1 //表示第一个数组元素值+1
6、函数,数组和指针
#include <stdio.h> int sum(int *num, int n); //声明sum函数时,括号内声明数组指针形参和变量n int main(void) { int array[10] = {0,1,2,3,4,5,6,7,8,9}; int total; total = sum(array, 10); //调用sum函数时,括号内给出数组首元素地址,和常量 printf("数组各元素和为%d", total); } int sum(int* array, int n) { int i=0; int total=0; for (i == 0; i < n; i++) { total = total + array[i]; } return total; }
7. 指针和字符串
#include <stdio.h> int main() { const char* mesg = "Think different"; const char* copy; copy = mesg; printf("%d\n", *mesg);//表示指针指向的内容 printf("%d\n", *copy); printf("%d\n\n", 'T'); printf("%p\n", mesg);//表示指针的值 printf("%p\n\n", copy); printf("%p\n", &mesg);//表示指针的存储地址 printf("%p\n", ©); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY