数组名++,该如何处理
数组名++C/C++ code#include stdio.h//#include string.hchar *str_cpy(char str1[],char str2[]){whi
数组名++
C/C++ code#include <stdio.h>//#include <string.h>char *str_cpy(char str1[],char str2[]){ while(*str1++=*str2++); str1=str1+1; return str1;}int main(){ char str1[]="jxnuzhouguohong"; char str2[]="come on"; str_cpy(str1,str2); puts(str1); return 0;}
最近在琢磨传引用和动态分配内存的时候,想到了strcpy这个函数,如果形参是数组名的话,自增没问题,但是如果str++;不是说数组名是常量吗?怎么不报错呢?
[解决办法]char str1[],char str2[])在参数里已经是指针了吧?
char str2[]="come on";
str2++这样应该是有问题的吧
[解决办法]数组名做参是自动退化为指针(非常量)。
[解决办法][解决办法]函数的形参一定是变量。形参的char str[]和char *str没有本质区别。
写成数组形式只是强调函数中按数组处理各个元素,而写成指针变量形式还含有返回参数的意义。
调用函数时传递实参,实质上是用实参表达式的值对形参变量进行初始化。
在函数内用sizeof()可以检验出形参是指针变量还是数组。