c语言中long *(*c)[12]是什么意思?
作者&投稿:居发 (若有异议请与网页底部的电邮联系)
乱说几句哈。
先用a代替(*c),那么就变成了long
*
a[12],这个东东显然是指针数组,即a是个数组,有12个元素,元素类型是long*.
然后可以定义:long
**c=a;这个东东显然是指向指针的指针,意思是c是一个long
**类型的指针,
*c表示的是a中的元素(是一个指针),**c就是a中元素指向的地址的值了。
long *(*c)[12]指声明一个名为c的变量,其类型为long类型指针的一个数组(大小为12)的指针,简单的说就是long指针的数组的指针
在C语言语法中,声明修饰符(declator)的优先级如下:
数组与参数后缀的结合性最高
括号用于改变结合顺序,和表达式(expression)中的作用类似
*(指针)的结合性最低
需要注意的是,C的声明修饰符在编译时的结合顺序刚好和expression相反,也就是将最外层的修饰符最先和原本的类型结合,也就是说最内层的修饰符是最后修饰
例如声明
long ((c[1])[2])[3];
就是一个大小为3的数组的一个大小为2的数组的一个大小为1的数组
乱说几句哈。
先用a代替(*c),那么就变成了long * a[12],这个东东显然是指针数组,即a是个数组,有12个元素,元素类型是long*.
然后可以定义:long **c=a;这个东东显然是指向指针的指针,意思是c是一个long **类型的指针,
*c表示的是a中的元素(是一个指针),**c就是a中元素指向的地址的值了。
(*c) 返回的类型是 (long*)[12] , 所以c 的类型((long*)[12])*.
也就是说 c是一个指针, 这个指针指着一个数组, 这个数组长度为12, 并且每个元素是一个指向long类型的指针。
注意! 你只是定义了指针而已, 而不是数组
(*c) 是一个一维数组,数组的每个元素都是long * ,所以c 是一个指向一维数组的指针,
long * (*c)[12] => 行指针 也叫数据指针 指向一个二维数组 w[NUM][12] 并且数据的类型为long*
底朋正柴: 乱说几句哈.先用a代替(*c),那么就变成了long * a[12],这个东东显然是指针数组,即a是个数组,有12个元素,元素类型是long*.然后可以定义:long **c=a;这个东东显然是指向指针的指针,意思是c是一个long **类型的指针,*c表示的是a中的元素(是一个指针),**c就是a中元素指向的地址的值了.
定襄县13891158275: C语言long是什么意思? - ?
底朋正柴: 1. long 是C语言的一个关键字,代表一种数据类型,中文为长整型.2. long是long int的简写,也就是说,在C语言中long int类型和long类型是相同的. 3. 每个long型占4个字节,在32位编译系统下,long和int占的空间是相同的.这也导致了long...
定襄县13891158275: C语言long是几个字节? - ?
底朋正柴: C语言中long是4个字节,是一种数据类型,有两种表现形式:有符号和无符号. 在有符号中,long的表示数的范围为:-2147483648~2147483647 在无符号中,long的表示数的范围为::0~4294967295 扩展资料: 整型变量可分为以下几类...
定襄县13891158275: C语言怎么输出或输入long类型的? - ?
底朋正柴: 在c语言中,对于数值类型只有通过printf类函数输出这一种方式,比如printf, sprintf, fprintf等.这类函数输出时要求有格式符号,其中long double的格式符号为%llf 以下是一个简单的参考代码,输出到标准输出设备. #include int main() {long ...
定襄县13891158275: 在c语言中,long的用法是,long比int的字节数要长4个字节,那么就说明了,long存的数值 - ?
底朋正柴: 要看看long与int的数值长度
定襄县13891158275: C语言:使用long整型变量存放结果,最大可以计算多少阶乘而不溢出?如果要计算15的阶乘,可以使用什么类型的变量,如何编写代码?
底朋正柴: C语言的long一般是32位的,最大大约是21亿,而15的阶乘超出了这个数字,最多只能计算到12的阶乘.如果要计算更大的阶乘,可以考虑使用long long,这个在VC2010中是支持的,最早在哪个版本开始支持long long我也记不清楚了,你可以试试就知道了.另外可以使用double或者long double来近似计算.
定襄县13891158275: c语言输入十进制(long),以二、八、十六进制输出的程序 - ?
底朋正柴: 这个程序写的真不错,很简明,标记一个.他的算法思想在于:先采用除“base”取余(所有的余数都会小于“base”),然后,再按这些余数的倒序输出就完成了数据的10进制与其它进制的转换.(如果你理解10转二进制,以上话你就能明...
定襄县13891158275: C语言中的LONG是什么意思??
底朋正柴: 又答你的!!呵呵~~ 声明长整型变量或函数
定襄县13891158275: 在c语言中long x - square - ?
底朋正柴: long long是属于int型, 一般来讲, 是long int型大小的两倍, int型的4倍. 但是需要注意的是long long是一个后来加上去的数值类型, 也就是说非常老的编译器是不支持这个数据类型的(如VC++6.0).如果在此类编译器下使用长长整型, 以VC++6.0为例, 就要用它的自定义数据类型:__int64. 若要输入输出(包括C++), 则只能用printf或scanf函数. 如: __int64 i64 = 100; printf("%l64d", i64);
定襄县13891158275: 编写函数fun,函数原型为:int fun(int a,int b,long*c). - ?
底朋正柴: #include "stdafx.h"#include <stdio.h> int fun(int a,int b,int *c) { int k1,k2,k3,k4; k1=a%100/10; //a的十位 k2=a%10; //a的个位 k3=b%100/10; k4=b%10; *c=k4*1000+k1*100+k3*10+k2; return *c; } int main(int argc, char* argv[]) { int a,b; int c; printf("输入a,b\n"); scanf("%d%d",&a,&b); c=fun(a,b,&c); printf("%d\n",c); return 0; }