user-0 提问: 参数传递时，实参只能是数组，不能是指针，这是为什么呢？？？

回复:
user: user-0
content: 引用 10 楼 paschen 的回复:[quote=引用 9 楼 daa20 的回复:] 退化成指针，，与直接用指针有什么区别呢  [quote=引用 6 楼 paschen 的回复:] [quote=引用 4 楼 daa20 的回复:] [quote=引用 1 楼 paschen 的回复:] char* 的话是让这个指针指向常量区的字符串（你不能去修改他） 而 char []是在栈上分配的字符数组，你可以进行修改  还有一个问题，，书上说，数组作为实参传递，会退化成指针。用数组作为实参传递就可以退化成指针了，这样与直接用指针做实参传递有什么区别呢？卡在这里了[/quote]  是的，函数参数与返回值中的数组均会退化为指针，函数中你不可能通过sizeof得到数组大小，得到的其实是指针的大小 你把这个函数参数声明为数组与声明为指针其实是完全一样的[/quote]  还有一个问题： if((pdest > psrc)&&(pdest < (psrc + count))) //这一部分没想明白      {         for(size_t i=count-1;i>=0;--i)         {             pdest[i] = psrc[i];            }         pdest[count] = '\0';        } 内存拷给函数，，这一个条件不是太明白，为什么会有(pdest > psrc)&&(pdest < (psrc + count))的判断呢，，这样做的目的是什么???[/quote]  if((pdest > psrc)&&(pdest < (psrc + count))) 这个条件表示目的和源有重复的区域[/quote]  懂了，谢谢啊！！

user: user-1
content: 引用 9 楼 daa20 的回复:退化成指针，，与直接用指针有什么区别呢  [quote=引用 6 楼 paschen 的回复:] [quote=引用 4 楼 daa20 的回复:] [quote=引用 1 楼 paschen 的回复:] char* 的话是让这个指针指向常量区的字符串（你不能去修改他） 而 char []是在栈上分配的字符数组，你可以进行修改  还有一个问题，，书上说，数组作为实参传递，会退化成指针。用数组作为实参传递就可以退化成指针了，这样与直接用指针做实参传递有什么区别呢？卡在这里了[/quote]  是的，函数参数与返回值中的数组均会退化为指针，函数中你不可能通过sizeof得到数组大小，得到的其实是指针的大小 你把这个函数参数声明为数组与声明为指针其实是完全一样的[/quote]  还有一个问题： if((pdest > psrc)&&(pdest < (psrc + count))) //这一部分没想明白      {         for(size_t i=count-1;i>=0;--i)         {             pdest[i] = psrc[i];            }         pdest[count] = '\0';        } 内存拷给函数，，这一个条件不是太明白，为什么会有(pdest > psrc)&&(pdest < (psrc + count))的判断呢，，这样做的目的是什么???[/quote]  if((pdest > psrc)&&(pdest < (psrc + count))) 这个条件表示目的和源有重复的区域

user: user-0
content: 退化成指针，，与直接用指针有什么区别呢  引用 6 楼 paschen 的回复:[quote=引用 4 楼 daa20 的回复:] [quote=引用 1 楼 paschen 的回复:] char* 的话是让这个指针指向常量区的字符串（你不能去修改他） 而 char []是在栈上分配的字符数组，你可以进行修改  还有一个问题，，书上说，数组作为实参传递，会退化成指针。用数组作为实参传递就可以退化成指针了，这样与直接用指针做实参传递有什么区别呢？卡在这里了[/quote]  是的，函数参数与返回值中的数组均会退化为指针，函数中你不可能通过sizeof得到数组大小，得到的其实是指针的大小 你把这个函数参数声明为数组与声明为指针其实是完全一样的[/quote]  还有一个问题： if((pdest > psrc)&&(pdest < (psrc + count))) //这一部分没想明白      {         for(size_t i=count-1;i>=0;--i)         {             pdest[i] = psrc[i];            }         pdest[count] = '\0';        } 内存拷给函数，，这一个条件不是太明白，为什么会有(pdest > psrc)&&(pdest < (psrc + count))的判断呢，，这样做的目的是什么???

user: user-2
content: 虽然在效果上数组名可以等同于指向数组的指针，但是在本质上它和实际的指针是有区别的。首先，数组名只是一个符号，系统不会为它分配任何空间。其次，数组名是一个常量，它不能作为左值进行运算（自增和自减也是不允许的）。而实际指针没有这方面的限制。

user: user-3
content: 关于指针 http://blog.csdn.net/zhangxiangdavaid/article/details/37885275

user: user-1
content: 引用 4 楼 daa20 的回复:[quote=引用 1 楼 paschen 的回复:] char* 的话是让这个指针指向常量区的字符串（你不能去修改他） 而 char []是在栈上分配的字符数组，你可以进行修改  还有一个问题，，书上说，数组作为实参传递，会退化成指针。用数组作为实参传递就可以退化成指针了，这样与直接用指针做实参传递有什么区别呢？卡在这里了[/quote]  是的，函数参数与返回值中的数组均会退化为指针，函数中你不可能通过sizeof得到数组大小，得到的其实是指针的大小 你把这个函数参数声明为数组与声明为指针其实是完全一样的

user: user-0
content: 引用 2 楼 zhangxiangDavaid 的回复:常量不可修改，仅此而已。 注意区分： char str[] = "David"; 和 char *str = "David"; 的区别。  还有一个问题，，书上说，数组作为实参传递，会退化成指针。用数组作为实参传递就可以退化成指针了，这样与直接用指针做实参传递有什么区别呢？卡在这里了

user: user-0
content: 引用 1 楼 paschen 的回复:char* 的话是让这个指针指向常量区的字符串（你不能去修改他） 而 char []是在栈上分配的字符数组，你可以进行修改  还有一个问题，，书上说，数组作为实参传递，会退化成指针。用数组作为实参传递就可以退化成指针了，这样与直接用指针做实参传递有什么区别呢？卡在这里了

user: user-0
content: 还有一个问题，，书上说，数组作为实参传递，会退化成指针。用数组作为实参传递就可以退化成指针了，这样与直接用指针做实参传递有什么区别呢？卡在这里了

user: user-3
content: 常量不可修改，仅此而已。 注意区分： char str[] = "David"; 和 char *str = "David"; 的区别。

user: user-1
content: char* 的话是让这个指针指向常量区的字符串（你不能去修改他） 而 char []是在栈上分配的字符数组，你可以进行修改