c语言地址指针
① 关于c语言指针和地址问题
针对第一个问题:
&是取地址符号,数据在计算机中存储,有相应的地址能够找到.
数组头部就相当于一个指针,如果float
x[n],那么x代表着数组中的首地址,由于数组在内存占用的是连续存储空间.因此也可以用指针去得到它的数据.
你调用数组的时候,其实也就是传递数组的首地址给函数,那么就不需要&符号了.然而你想传递thetaf,这个thetaf只是个数据,想在函数中改变它的值,那么可以通过得到数据的地址,在地址中改变数据.
第二个问题
同上面回答,可以采用一个全局变量,也就是定义在函数外面的变量,最好在.C文件开始的地方.
第三个问题:
返回一个数组即返回它的首地址就可以了,如果你能够了解到计算机数据在内存中的排列,那么这个概念就非常容易理解.(浮点数和整数一样,在内存中占用4个字节,
#include
<stdio.h>
float
*
SumArray(float
*x,
float
*y,int
len)
{
float
*sum;
int
i
=
0;
for(i=0;i<len;i++)
{
sum[i]
=
x[i]
+
y[i];
//*(sum+i)
=
*(x+i)
+
*(y+i);
}
return
sum;//这里返回的是sum数组的首地址,你可以把sum理解为一个指针的地址,也可以理解为一个数组的首地址.请注意(*sum和sum[0]的地址是一样的,sum是sum[n]的首地址),如果你能区分出这个概念,指针也是小case了.
}
int
main()
{
float
x[10],y[10];
float
*sum;//float
sum[10];
int
i
=
0;
for(i=0;i<10;i++)
{
x[i]
=
i;
y[i]
=
i*10;
printf("%f\t%f\n",x[i],y[i]);
}
sum
=
SumArray(x,y,10);//将返回的传递给sum指针,或者所让sum指向数组返回的地址
for(i=0;i<10;i++)
{
printf("%f\n",sum[i]);
}
printf("%d",sizeof(float));//查看浮点数在电脑中占用的字节
return
0;
}
通过函数,可以返回一个数组,我已经调试通过.你也可以在你的电脑上调试这段程序,加深理解,
PS:如果觉得我的答案能回答你的问题,请采纳,谢谢~
② C语言里面的地址是什么意思,指针指向一个变量的地址
C语言里面的地址实际上就是一个内存单元的编号,计算机一般是以一个字节为最小的存储单元的,每个字节就给它编一个编号,这个编号就是这个字节的地址,这个编号也就是地址是具有唯一性的。指针指向一个变量的地址,这个类似于,通过知道房间号就可以确定这个房间的具体位置是一样的道理,这个房间编号就是房间的地址。
③ C语言关于指针的问题,指针的地址
printf("%s\n",p);为打印字符串,传的是字符串的地址,p就是一个指向这个字符串地址,所以没什么问题。
若你要打印这个物理地址,直接printf("%d\n",p);就可以拉,你加个*,就是取这个地址的值了,所以printf("%d\n",*p); 等于97(即ASCII码的 a 的值),printf("%d\n",*(p+1)); 等于98(即ASCII码的 b 的值)
④ C语言中的 指针 和 地址的关系
指针保存了某个变量的地址
而指针本身其实也是一个变量,它也有自身的地址,
而指针的内容是某个变量的地址
内存是有地址的,就像每个具体的地方都对应了唯一一个地址一样
比如我在一张纸上写了某个地方的地址
这张纸不等于地址,但是通过这张纸,你可以找到这个地方