本文目录一览:
C语言中数组首地址和数组第一个元素的地址有什么区别呢
C语言中数组首地址和数组第一个元素的地址关系如下:
1、它们的地址值是相等的。
2、第1个元素的地址如果是p,则p+1就是第2个元素的地址。
3、数组的首地址如果是p,则p+1就跳过这个数数组而指向这个数组最后一个元素最后一个字节的下一字节。
扩展资料:
数组的创建:在创建数组时,我们必须定义数组的类型和大小,数组的大小不能为0,数组中的元素类型都是相同的。
数组的初始化:在数组创建时,我们也要必须为数组初始化。
一个数组,可以保存一些数据,但是每一个数据不一定有用。或者说,有些时候的数组的数据不一定要输出,所以我们可以再来开一个相同的数组,来标记模拟是否输出数组中的某个元素。
参考资料来源:百度百科-数组
参考资料来源:百度百科-c语言
C语言中怎么输出数组的首地址
%p
直接用16进制地址形式输出地址
%d
把地址直接用10进制形式输出
char
a[]
=
"hellow
C++";
int
b[]
=
{0x01,0x02,4,0x08,0};
如上数组如下输出都可以:
printf("十进制地址%d
十六进制地址%p",
a,
a);
printf("十进制地址%d
十六进制地址%p",
b,
b);
printf("十进制地址%d
十六进制地址%p",
a[0],
a[0]);
printf("十进制地址%d
十六进制地址%p",
b[0],
b[0]);
C语言中的首地址是什么意思
比如一个对象/数组之类的占用很多字节的内存,它占用的第一个内存的地址就是首地址了。例如char s[16]从0x1到0x10,首地址就是s[0]的地址也就是0x10
C语言中如何指定数组的首地址在指定的地址
据我所知,创建数组需要2个参数,1是地址,2是分配空间。空间分配是不能重复的,也就是说创建2个数组,这两个数组是不可能重合的,为了防止这种事情出现,所以不能指定地址。而是编译器自动分配,不能人为。
但是可以省去分配空间这个步骤,而是只创建地址,这就是指针的概念。比如int a[12],你若是想创建另一个代替a[12],可以int *p=a;这样,p的值就是a数组的首地址了。int *p =(int*)0x80000;意思就是p[0]的地址是0x80000,创建的时候要确定(int*)0x80000已经分配过了,可以使用了,不然就相当于野指针,容易出错。
C语言首地址问题
数组的首地址就是数组名, a[i]表示数组第i个元素对应的值, a[i]表示取数组第i个元素的“位置”也就是地址。只有a才是首地址,a[i]是说取数组第i个元素的地址,他是地址但不是数组的首地址喔。我们说的首地址是数组首个元素的地址,因为a等价于a+0等价于a[0],因此a才是数组首元素的地址。
scanf("%d", a)就表示了取地址的地址,变成了所谓的“二级”地址。 a和a+0等价,也就和a[0]等价,表示取数组第0个元素的地址,注意它是一级地址,所以不报错。当然你可能不知道什么是一级地址,二级地址。如果“地址”前面添加表示取地址的地址,你可以简单认为是个二级地址。因为学到指针变量时,会出现多级指针,数组指针等变态用法。学到后面你就知道了。
正确的写法是:
scanf("%d", a );
scanf("%d", a[i])