12章 指针和数组-《C语言程序设计现代方法》第二版修订版

12章 指针和数组-《C语言程序设计现代方法》第二版修订版,第1张

1.指向复合常量的指针

可以创建没有名称的数组

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;//直接复制就会出错

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/2990425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存