十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
看你纠结得,C语言中,一个指针代表一个数据块。无论是元数据(int ,float char ...),还是复杂数据(数组,结构体,链表...),都可以用指针指向它们。只需区别它们的引用规则即可。
创新互联于2013年成立,先为阳春等服务建站,阳春等地企业,进行企业商务咨询服务。为阳春企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
int a[3][4]; int **p; p=a;合法的 编译完全没有问题 指针角度来说二维数组名就是指针的指针,所以把二维数组名赋值给二维指针完全没问题。
/*采用函数调用的方式编程实现,将30名学生、3门课程的成绩分别存放在31×4数组的前30×3位置,计算出每个学生 的总成绩存放在该数组的最后一列的对应行上,计算出单科成绩的平均分存放在最后一行的对应列上。
由scanf(%d, &i);可知道是输入一个整型的数赋给i。
简单的说吧,就是参数*p指向的内容就是你带入的参数,这个算第一指向。但是在函数里,你有运行了p=b,也就是p重新指向了数组b的首地址,所以,赋值也就是给数组b进行赋值,跟a没有关系了。
1、首先,你不应该返回局部变量的指针,因为局部变量在离开函数后就会被销毁。如果你想这样返回一个数组的话,你应该malloc出一个数组来返回。至于应该return什么,return (malloc出来的那个指针)就可以了。
2、在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。在大多数情况下,一维数组和一维指针是可以通用的。比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。
3、方法1:利用全局变量 分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。
4、((double (*)[row])matrix);里的[row]是一个变量,而指向数组的指针 double (*matrix)[ROW]里的ROW只能使用常量,所以这里也有一个错误。
5、函数指针的数组定义方法:返回值类型( * 指针变量名[Number]) (形参列表)。
6、int *fn_pointer ();的意思完全不同了。fn_pointer 将是一个函数名, 其返回值为 int 类型的指针。2:函数指针变量 在C语言中规定,一个函数总是占用一段连续的内存区, 而函数名就是该函数所占内存区的首地址。
这样是没错的,p是一个指针类型的数据,它指向的是三个int类型的数组,要用p指向的数据可以这样(*p)[0],(*p)是解出p指向的数据,也就是数组a,其实也就是数组a的首地址,然后就可以用下标[]取数据了。
int (*q)[3] 和 int *q[3] 是一个意思,声明一个长度为3的指针数组。这里不存在结合的问题,“int *”说明q是指针类型的变量,后面的“[3]”说明q是数组,因此q是长度为3的指针数组。
数组指针定义int(*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。