第1个问题:
int a[5]={1,3,5,7,9},*p=new int [5];
1.p=a; 2.*p=a; 3*(p+1)=a[1]; 4.*p=*a
上面几个操作那个是错误的,分别解释下。
第2个问题:
我发现我队指向指针的数组和数组指针这两个概念混淆不清比如我在定义函数strcmp(char *s1,char *s2)会写成strcmp(char *s1[],char *s2[]) 编译不出结果来,请详细说明下上面2个函数的作用与区别,谢谢。
第1个问题:
int a[5]={1,3,5,7,9},*p=new int [5];
1.p=a; 2.*p=a; 3*(p+1)=a[1]; 4.*p=*a
上面几个操作那个是错误的,分别解释下。
第2个问题:
我发现我队指向指针的数组和数组指针这两个概念混淆不清比如我在定义函数strcmp(char *s1,char *s2)会写成strcmp(char *s1[],char *s2[]) 编译不出结果来,请详细说明下上面2个函数的作用与区别,谢谢。
第一个问题:
错误的是2. *p=a; 因为*p是指向一个元素. 而a是一个数组. 数组不能赋值给元素.
1.p=a; 正确,因为p是指针,a也是数组的指针. 指针赋值给指针,没有问题.
3.*(p+1)=a[1]; 一样的,*(p+1)是指向一个元素.a[1]也是一个元素.元素赋值给元素.没有问题.
4.*p=*a; 跟3一样.
第二个问题:
char *s1表示传递的是地址. char s1[]也表示传递的是地址, char *s1等于char s1[].
那么很明显. char *s1[]就表示指向指针的指针.
有问题请追问.