int main(){
char *sp;
sp=(char *)malloc(sizeof(char));
scanf("%s\n",sp);
printf("%s,%c\n",sp,*sp);//pointer,p
return 0;
}
问题:
①:在scanf那一行,sp前不加*号,sp是指针变量吗?或是其它的,该怎么叫?
②:为什么可以直接用scanf给sp赋字符?
int main(){
char *sp;
sp=(char *)malloc(sizeof(char));
scanf("%s\n",sp);
printf("%s,%c\n",sp,*sp);//pointer,p
return 0;
}
问题:
①:在scanf那一行,sp前不加*号,sp是指针变量吗?或是其它的,该怎么叫?
②:为什么可以直接用scanf给sp赋字符?
正常情况下,scanf的用法应该是
char ch;
scanf("%s", &ch)
注意,ch前面有一个取地址符号,所以,scanf的本质是,将一个值存储到变量对应的地址里面,成为变量的值
这里面sp是一个char的指针变量,本身就是指针,所以,scanf可以直接对sp进行赋值,表示将输入的值存储到sp指向的地址中,也就是malloc出来的空间