其中printf("%d",*p)我理解的是读取p在内存中的值 因为int* p = &a,*p指向了a的地址 打印出的结果便是0 如果将printf(“%d”,*p)中的*p改为p 结果便是变量a在内存中的地址
搞清一个概念:在函数体中的值在函数执行完之后会被销毁,所以
int t(int a) { a++; }中的a不会返回给主函数中的a 可以使用&a取a的地址并将地址赋予给p 这样(*p)++就相当于在函数体中新声明了p将其指向a的地址,函数体所更改的*p便是a的值,而不是函数体新声明的a的值
一位同学告诉我其实指针和数组是一样的 a[]中的a就是数组第一位数的地址,为此我也测试了一下
#include <stdio.h> int t(int* p) { (*p)++; } main() { int a[5] = { 1,2,4,6,9 }; printf("%d\n", *a); t(a); printf("%d", *a); return 0; }结果是 我稍微理解了一些
在学习c语言之余我还有学习3d软件的兴趣,正在学习houdini,这是一个可以通过进行编程来实现建模等等一系列操作的软件,主要使用python和c++来进行控制,我想,这是我学习编程的又一个动力了! 为了生产力而学习!
指针学习来源于av9855378
