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出来的空间
1.在scanf那一行,sp前不加*号,sp是指针变量吗?
是指针变量
2.为什么可以直接用scanf给sp赋字符?
因为sp指针变量本身存储的就是地址,所以不用再取地址&了。
scanf可以通过这样直接输入到对应地址变量内容中。
以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!
scanf是C的内置库的函数,用于接受输入的数据。sp代表是指针变量,该变量的值是另一个变量的内存地址值。*sp是根据指针sp变量储存的指定变量的地址值去内存中获取到指定变量的值