关于函数中使用指针的问题
环境: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"; }
[解决办法]
初始化 与 赋值 不同