本文介绍了怀疑阵列的地址? arr和& arr的使用之间的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
void main()
{
int arr[]={1,2,3};
printf("%u %u",arr,&arr);
printf("%u %u",arr+1,&arr+1);
}
第一个声明我得到arr和& arr的相同地址。
第二个它给出了不同的y?
使用arr和& arr的区别是什么?
可以解释一下吗?
first statement i am getting same address for arr and &arr.
2nd it gives different y?
wats the difference in using arr and &arr?
can any one explain me?
推荐答案
#include <stdio.h>
int main()
{
int arr[]={1,2,3};
printf("%p %p\n",arr,&arr);
printf("%p %p\n",arr+1,&arr+1);
return 0;
}
引用:
你能说我使用** p吗? 。令人困惑。提前谢谢。
can you say me the use of **p? . its confusing. thankz in advance.
可以使用双指针,例如,在锯齿状数组实现中:
A double pointer could be used, for instance, in jagged array implementation:
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main()
{
int ** pp;
int size[N] = { 2,3,1 } ;
pp = (int**) malloc( N * sizeof(int *));
int n,k, count=0;
for (n=0; n<N; ++n)
{
pp[n] =(int *) malloc( size[n] * sizeof(int));
for (k=0; k<size[n]; ++k, ++count)
pp[n][k] = count;
}
for (n=0; n<N; ++n)
{
for (k=0; k<size[n]; ++k)
printf("pp[%d][%d] = %d\n", n, k, pp[n][k]);
printf("-------------\n");
}
for (n=0; n<N; ++n)
{
free(pp[n]);
}
free (pp);
return 0;
}
这篇关于怀疑阵列的地址? arr和& arr的使用之间的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!