scanf("%c",ch)和scanf("%c",&ch)的区别
1个回答
关注
展开全部
在C语言中,scanf()函数是用来从标准输入设备(如键盘)读取数据的,其中%c表示读取一个字符。在使用scanf()函数读取字符时,需要指定字符类型变量的地址。scanf("%c", ch) 中的 ch 是字符类型变量的名称,表示将读取的字符存储到变量 ch 中。在这种情况下,scanf()函数会将读取的字符直接存储到 ch 中,因此不需要使用&符号获取 ch 的地址。而 scanf("%c", &ch) 中的 &ch 表示获取 ch 变量的地址。在这种情况下,scanf()函数会将读取的字符存储到 ch 变量所在的内存地址中,因此需要使用&符号获取 ch 的地址。
咨询记录 · 回答于2023-04-16
scanf("%c",ch)和scanf("%c",&ch)的区别
亲,您好,scanf("%c", ch) 和 scanf("%c", &ch) 的区别在于,前者会将字符直接存储到 ch 变量中,后者会将字符存储到 ch 变量所在的内存地址中。通常情况下,我们使用 scanf("%c", &ch) 来获取字符并将其存储到变量中。
在C语言中,scanf()函数是用来从标准输入设备(如键盘)读取数据的,其中%c表示读取一个字符。在使用scanf()函数读取字符时,需要指定字符类型变量的地址。scanf("%c", ch) 中的 ch 是字符类型变量的名称,表示将读取的字符存储到变量 ch 中。在这种情况下,scanf()函数会将读取的字符直接存储到 ch 中,因此不需要使用&符号获取 ch 的地址。而 scanf("%c", &ch) 中的 &ch 表示获取 ch 变量的地址。在这种情况下,scanf()函数会将读取的字符存储到 ch 变量所在的内存地址中,因此需要使用&符号获取 ch 的地址。
所以什么时候加&符什么时候不加,可以举个例子吗?
在C语言中,使用&符号可以获取变量在内存中的地址。因此,当需要将变量的地址作为参数传递给函数时,需要使用&符号;当需要直接传递变量的值时,不需要使用&符号。具体例子如下:1. 传递变量的地址时,需要使用&符号,例如:```void foo(int *p) { // do something with the pointer}int main() { int a = 10; foo(&a); // 传递变量a的地址给foo函数 return 0;}```在这个例子中,需要将变量a的地址传递给foo函数,因此使用&符号获取变量a的地址。2. 传递指针变量时,不需要使用&符号,例如:```void foo(int *p) { // do something with the pointer}int main() { int a = 10; int *p = &a; foo(p); // 传递指针变量p给foo函数 return 0;}```在这个例子中,需要将指针变量p传递给foo函数
在这个例子中,需要将指针变量p传递给foo函数,不需要使用&符号获取p的地址。3. 传递基本数据类型时,需要使用&符号获取变量的地址,例如:```void foo(int a) { // do something with the variable}int main() { int a = 10; foo(&a); // 错误,不能将地址传递给foo函数 foo(a); // 传递变量a的值给foo函数 return 0;}```在这个例子中,需要将变量a的值传递给foo函数,不需要使用&符号获取变量a的地址。如果使用&符号将变量a的地址传递给foo函数,会导致编译错误。
#include#includeint main(){ int i=0,n=0; char str[20]; char ch; printf("请输入字符串:"); gets(str); printf("请输入要查找的字符:"); scanf("%c",&ch); for(i=0;str[i]!='\0';i++) { if(str[i]==ch) { n++; } } if(n++!=0) printf("请输出该字符的个数:%d\n",n); if(n++==0) printf("该字符不存在"); return 0;}
那这个里面为啥需要&符啊?
这里的&符号是用于获取变量的地址。输入函数scanf需要将输入的字符存储到变量ch中,因此需要将变量ch的地址作为参数传递给scanf函数,以便scanf函数将输入的字符存储到变量ch所在的内存地址中。具体来说,scanf函数的第一个参数是格式字符串,用于指定输入的数据类型和数据的格式。在这个例子中,格式字符串为"%c",表示需要输入一个字符。scanf函数的第二个参数是一个指向变量的指针,用于指定输入的数据存储的位置。由于变量ch的类型是char,所以需要使用&符号获取变量ch的地址,即将&ch作为第二个参数传递给scanf函数。