可以创建没有名称的数组
int *p=(int []){3,0,3,4,1};
2.*运算符和++运算符的组合
*p++或*(p++) ;自增前的表达式的值是*p,以后再自增p;后缀++的优先级高于*
(*p)++;自增前表达式的值是*p,以后再自增*p
*++p或*(++p);先自增p,自增后表达式的值是*p
++*p或++(*p);先自增*p,自增后表达式的值是*p
3.数组作为指针
int a[10];
*a=7;/*srores 7 in a[0]*/
虽然可以把数组用作指针,但是不能给数组名赋新的值。试图使数组名指向其他地方是错误的;
while(*a!=0)
a++;
这一限制不会对我们造成什么损失;我们可以把a复制给一个指针变量,然后改变该指针变量
p=a;
while(*p!=0)
p++;
4.数组性实际参数
- 在给函数传递普通变量时,变量的值会被复制。
- 给函数传递数组所需要的时间与数组的大小无关。因为没有对数组进行复制,所以传递大数组不会产生不利的结果。
- 如果需要,可以把数组型形式参数声明为指针。
例子
int find_largest(int *a,int n)
{
...
}
我感觉跟如下是一样的
int find_largest(int a[],int n)
{
...
}
对于形式参数而言,声明为数组跟声明为指针是一样的;但是对变量而言,声明为数组跟声明为指针是不同的。
int a[10];//会导致编译器预留10个整数空间
int *a;//只会为一个指针变量分配空间
*a=0;//直接复制就会出错
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)