00问答网
所有问题
求问c语言大神: int a[3][4] 那么a,*a,&a是什么类型?有什么区别?
求问c语言大神:
int a[3][4]
那么a,*a,&a是什么类型?有什么区别?
举报该问题
推荐答案 2018-01-17
数组元素地址是连续的
a是表示二维数组的首地址,其值相当于 &a[0][0] 本身是常量指针 不能改变其值。
*a是行的首地址 也就是&a[0] 如果你把(*a)+1 那么值就是 &a[1]
&a值和a一样,但意义不同,
a表示数组首地址,a+1就变成第二个元素地址(int 每个元素地址相隔4)
&a表示整个数组,&a+1就直接跳过整个数组的内存地址空间(相当于跳过了 4*元素个数的地址)
你可以用sizeof(a) 和sizeof(&a) 查看内存大小就知道了
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://00.wendadaohang.com/zd/ZeDrBTjD0rrDnDe0ej.html
其他回答
第1个回答 2018-01-17
a是指数组的首地址,是个地址值;
*a是数组第一个位置的元素值,是数组中的数值;
&a不能用于取数组的地址,本身a就是地址了,不能再次取地址,否则得到的值是错误的。但是可以取变量的地址。
第2个回答 2018-01-17
二维数组数组名为数组指针.
所以
a类型为 int (*)[4]
*a就是a[0], 类型为int[], 等效于const int *
&a是二维数组指针. 类型为 int (*)[3][4];
本回答被提问者和网友采纳
相似回答
int
a[3][4]
;
那么 a,*a,
**a分别代表
什么?
答:
所以 &a[0][0] 等于 *a a 是首地址
,易理解,从略。--- include <stdio.h> int main(){ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};printf("%d %d\n", a , &a[0][0]);printf("%d %d\n", *a , &a[0][0]);printf("%d %d\n", **a , a[0][0]...
c语言
中,数组名的前面加
*,
如
a[3][4]
;
*a
输出的
是什么
结果
答:
由于
a[3][4]
是个二维数组,数组名是数组的首地址,也是一维a[3]的首地址,也是一维第一个元素a[0][0]的首地址,因此a a[0] a[0][0]三个的地址是相同的
,那么
*a在这里代表什么呢,*在这里代表的是取值符,而不是指针符号,由于a是个二维数组
,*a
代表的是取第一维的首元素,而这里...
C语言:
数组
,*a
和&*a
有什么区别?
答:
1、本质区别 双引号里面的是字符串, 而单引号里面的代表字符
。2、输出区别 str = “a”输出的就是a这个字母;str = ‘a’输出的测试65 3、底层区别 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。
C语言,
为
什么int
a[]
的传递参数是这样的?
答:
void func(
int
a[]
)你可以暂时看做等同于void func(int
*a
)需要的是一个数组的首地址 数组名即为数组的首地址 a[0] a[1] 等等都是取值 而非地址 以你的定义来看
a[4]是
访问非法地址,你只分配4个空间却访问第5个值,任何时候这种写法都是不允许的 ...
大家正在搜
c语言char ch是什么意思
*a在c语言中是什么意思
int a[3][3]
c语言a+=a-=a*a
c语言static用法
C语言中static
c语言putchar
char c语言
c语言scanf啥意思
相关问题
求C语言大神,int a=4,a+=a-=a*a后,a=?
c语言程序设计 选择正确的定义语句A:int A[a] B:...
C语言:a=3,a+=a-=a*a,求a
int* a;与int *a;有什么区别
c语言中int a[3][]什么意思
c语言指针 定义 int *a[3] 和 int *(a)[...
int *a[3][4]是什么意思
请问C语言,常变量const int a=3;和变量int ...