首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于函数中使用指针的有关问题

2012-09-25 
关于函数中使用指针的问题环境:win XP,编译 TC3 和 VC6C/C++ codevoid main(){void sort(char *p,int n)i

关于函数中使用指针的问题
环境:win XP,编译 TC3 和 VC6

C/C++ code
void main(){    void sort(char *p,int n);    int p;    char a[12];    scanf("%d",&p);    sort(a,p);    printf("%s\n",a);}void sort(char *p,int n){    switch(n)    {        case 1: p[]="January";break;        case 2: p[]="February";break;        case 3: p[]="March";break;        case 4: p[]="April";break;        case 5: p[]="May";break;        case 6: p[]="June";break;        case 7: p[]="July";break;        case 8: p[]="Aguest";break;        case 9: p[]="September";break;        case 10:p[]="October";break;        case 11:p[]="November";break;        case 12:p[]="December";break;        default:p[]="Error";    }}

以上编译均有出错,主要是提示我语法错误,“p[]="January";”这些都语法错误了,我想不通这不是给字符数组赋值的格式吗?怎么会语法错误了呢。

[解决办法]
我不知道什么叫做“给字符数组赋值的格式”
我只知道数组只能在初始化的时候整体赋值,否则必须单独操作每个元素
[解决办法]
void sort(char *p,int n)
{
switch(n)
{
case 1: p[]="January";break;
case 2: p[]="February";break;
case 3: p[]="March";break;
case 4: p[]="April";break;
...
老兄,你的p是个字符指针变量,可以指向字符或字符串,则p="January"才是正确的
之后p[i]可以表示指向字符串中的第i个字符
[解决办法]
数组在传参时等价于指向首元素的指针
sort函数只知道自己接受了一个指向字符类型的指针,压根不知道这个指针原本是什么东西

p="January"会将sort内的局部变量p指向常量字符串“january”,于是p跟调用这个函数时传递的那个数组正式脱离关系
[解决办法]
p[] = xxx ---> p = xxx;
[解决办法]
指针用法有问题
C/C++ code
//void main()int main(){    //void sort(char *p,int n);    char const* sort(int n);    int p;    char a[12];    scanf("%d",&p);        printf("%s\n",sort(p));}char const* sort(int n){    static char const* str[] = {        "January",//;break;        "February",//;break;         "March",//;break;         "April",//;break;        "May",//;break;        "June"//;break;        "July",//;break;        "Aguest",//;break;        "September",//;break;        "October",//;break;        "November",//;break;        "December"//;break;        //default:p[]="Error";    };    if(0 < n && n < 13)    {    return str[n-1];    }    return "Error";      }
[解决办法]
初始化 与 赋值 不同

热点排行
Bad Request.