热心网友
回答时间:2024-05-15 01:55
如果单纯int *a和int a[]的区别的话,int *a为指向一个整形的指针。而int a[]为一个整形数组,而数组名为其第一个元素的首地址,他们一个是形参,一个是实参,形参指向实参的地址,上面的程序错了,和这两个参数没关系,将Fun含数的第二行改为for (i=0; i<n-1; i+=1)即可实现从大到小的排序。
1.
声明的时候不同
int *a; //没有给a分配地址 野指针
int a[5]; //a已经是数组的首地址了
2.
指针是变量 数组名是常量
int a[5];
int *p=a;
你是可以p+1,a+1 而且他们等效 ,
其他都一样, 本质就是储存地址 根据其类型算出偏移量进行偏移( 也就是p+几 )
收起
热心网友
回答时间:2024-05-15 01:55
从基础讲
第一,指针就是地址
第二,指针变量是用来专门储存 其他变量的 地址 的变量
指针变量p的值是变量a的地址
而指针运算符“ * ”是为了表示指针变量和它所指的变量之间的关系
*p等价于变量a,就是说比如 int a=3; p=&a; 当输出*p的值为a的值也就是3;
也就是说程序中赋值过程的a=3;与*p=3;是等同的
p=&a;是使p这个指针变量指向a,因为我们要把键盘输入端的字符存到变量a所在的存储空间,而不是变量a存储的数据所指向的内存空间~所以写做scanf("%d",&a);// ”&“是以一个操作符,可以获取变量a所在的存储空间位置,而不是变量a所在存储空间中存储的数据.也就是所谓的地址=指针
而你所说的把(某指针变量)所指存储单元的内容赋给(变量)这种功能的表达式应该是
(某变量)=*(某指针变量)举例: b=*a
也就是比如
变量a=3 a的地址(指针)为1000;
p=&a 就是指针变量p的值变为变量a的地址,也就是1000;此时的p 是指针变量
p=*a 就是把变量a的值3赋给变量p,也就是p=3; 此时的p是变量而不是指针变量
收起
热心网友
回答时间:2024-05-15 01:56
a=30H a的地址为50H
p=&a 把a的地址给p 那么可以得到p的值=50H
p=*a 把a的内容给p 那么可以得到p的值为30H
收起
热心网友
回答时间:2024-05-15 01:57
*a表示值,&a表示地址
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。
收起