当前位置: 代码迷 >> C语言 >> 请问char *p=s;与char *p;*p=s;有什么区别?
  详细解决方案

请问char *p=s;与char *p;*p=s;有什么区别?

热度:513   发布时间:2008-04-30 13:43:48.0
请问char *p=s;与char *p;*p=s;有什么区别?
int strlen(char *s)
{
    char *p;
    *p=s;
    while(*p!='\0')
    p++;
    return(p-s);
}这个编译时出错
int strlen(char *s)
{
    char *p=s;
    while(*p!='\0')
    p++;
    return(p-s);
}
这个编译正确?
我相问问请问char *p=s;与char *p;*p=s;有什么区别?
搜索更多相关的解决方案: char  

----------------解决方案--------------------------------------------------------
我想通了,原来char *p=s;相当于是char *p;p=s;哈哈
----------------解决方案--------------------------------------------------------
char *p=s;
等价于char *p; p=s; 就是给指针变量p赋值;
char *p;*p=s;
而这个却是给指针p指向的变量赋值s;

所以你的第一个程序是错的,因为你试图把一个指针变量赋给一个字符变量。
----------------解决方案--------------------------------------------------------
指针定义一般定义:
char *p = NULL; //NULL为空指针
对指针空间赋值:
*p = 0; //p指针所指空间设为0

在你的程序中,p和s同为指针,可以直接传递
修改:
int strlen(char *s)
{
    char *p;
    p=s;  //将*去掉,OK
    while(*p!='\0')
    p++;
    return(p-s);
}
----------------解决方案--------------------------------------------------------
谢谢大家了
----------------解决方案--------------------------------------------------------
我以一颗中国心,表达我的爱国情
----------------解决方案--------------------------------------------------------
  相关解决方案