数组和指针问题

int (*a)[n]int *a[n]的区别

int* a[n],说明a是一个指针数组。

这是因为对于a来说,[]的优先级大于*的优先级,所以a是一个数组,同时再看左边,说明a这个数组中的内容都是指针值(地址值)。所以说,a是一个指针数组,即数组内容为指针的这样一个n维的数组。

如果计算a的字节数,则是(n4)字节,每个指针分配4个字节,n个指针构成的数组字节数即为 n\4。

int a[][n]或者int (*a)[n]则根据括号的优先级大于[]的优先级,所以说明a是一个指针,再看右边[],说明这个指针所指向的内容是一个n维的数组。

同理,计算这种情况下a的字节数,则是4个字节,因为这种定义,系统给分配的空间就是一个指针,因为就是4个字节。

接下来,说一说,在什么情况下,会使用上述的两种定义,首先,数组指针的使用。数组指针中可以存放n个指针,因为在定义后,可以将若干个地址放入数组中,然后将数组可以作为参数传递等。

而对于指向数组的指针,则是一种比较典型的数据类型,比如,a[m][n]是一个2维数组,那么a的数据类型就是(*a)[n],而a[0]的数据类型则是一个指针*a,这样在二维或者是多维数组作为实参向函数中进行传递时,则可以定义函数的参数类型为(*a)[n],实参为数组名a。

如何将代码暂时存储到远端

本地使用git push到远端,从远端下载后,再将远端的代码使用git删除。