C语言中*a是什么意思啊?和数组一个用法吗?
1、从概念上说,a表示二维数组a的首地址,而*a表示二维数组a第一行a[0]的首地址。这样在使用的时候就有所区别。
2、当定义二维数组a[M][N]时,数组名可以认为是二维指针,其指向二维数组的首地址。于是a的值就是首地址的值。而*a,就是a[0],a[0]是第一行的标记,代表第一行的首地址。
3、char a[]=asdf,这时候数组a是存放在函数的堆栈中的,函数推出时这个堆栈就被清除了。char *a=asdf,asdf是一个常量,不存放在堆栈中,而是放在一个特殊的段当中。
*a在c语言中是什么意思
1、通俗的讲,*A,A是个指针变量,*A是地址A中的内容,而**A说明*A也是一个地址。**A是*A地址中的内容。
2、在C语言里面有一种类型叫指针类型。如果你不知道指针类型,你需要去查一下 然后 指针类型就是一个地址(通俗的讲。严格地讲,很复杂的)。
3、&a:其含义比较单纯,就是“变量a的地址”。*a:用在不同的地方,含义也不一样。
4、int)a+1显然是地址a的下一个地址。如若a是0013ff6c,则(int)a+1是0013ff6d。
C语言:*a[]和(*a)[]的区别
1、如果是 *a[] 表示的是指针数组 float *a[3] 是三个不同的指针 而float (*a)[3] 则是数组指针, a是一个独立的指针,指向一行3个float的数组。传递的参数p是(*p)[3]; 所以 需要类型匹配才可以正常工作。
2、两者区别如下:”读“”写“能力 char*a=abcd此时abcd存放在常量区。通过指针只可以访问字符串常量,而不可以改变它。而char a[30]=abcd此时abcd存放在栈。可以通过指针去访问和修改数组内容。
3、a[10]是指针数组,它由10个指向某种类型数据的指针元素组成 (*a)[10]是指针变量,它指向含10个元素的一维数组的指针变量。
4、如果单纯int *a和int a[]的区别的话,int *a为指向一个整形的指针。
5、a[]普通的数组,存的每一个元素都是一个普通类型的变量,比如int;*a[]是数组指针,它的每个变量都是指针,比如int类型,每个成员都是int *指针,很多指针元素组成一个数组,而不是普通的变量类型。
6、前者是表示n个a指针,后者是表示n个指针a。你把它写成数组的形式我容易区别了,前者写成a[][n],而后者是a[n][],能看出区别了吗?就是说如果作为数组来用,前者的n是作为数组的x坐标的,后者的n是作为y坐标的。