C语言比较容易忽略的知识点
程序员文章站
2022-03-26 13:17:04
...
scanf的返回值是什么?
1.scanf()函数有返回值且为int型。
2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
变量的地址:& 变量名 &a
& :取地址符,得到变量的空间首地址(地址值)
C语言函数传递指针参数的问题
#include <stdio.h>
void swap(int a,int b);
int main()
{
int a = 6,b = 8;
printf("address in main():%p %p\n",&a,&b);
swap(a,b);
printf("main中的a =%d\n",a);
printf("main中的b =%d\n",b);
return 0;
}
void swap(int a,int b)
{
int c = 0;
c = a;
a = b;
b = c;
printf("swap函数中的a =%d\n",a);
printf("swap函数中的b =%d\n",b);
printf("address in swap():%p %p\n",&a,&b);
}
显然,在两个函数里,它们的地址并不相同,这意味着,它们并不是相同的存储空间,改变swap里的值,实际上仅仅只改变了swap()里面的a和b的值罢了,一旦swap执行完,swap里的a和b的储存空间立即释放掉,对于main()里的a和b,没有半点影响。
正确的写法
#include <stdio.h>
void swap(int a,int b);
int main()
{
int a = 6,b = 8;
swap(&a,&b);
printf("main中的a =%d\n",a);
printf("main中的b =%d\n",b);
return 0;
}
void swap(int *a,int *b)
{
int c = 0;
c = *a;
*a = *b;
*b = c;
}
* 0x34 = * 0x56
//地址内容进行交换
QQ_1047635442
上一篇: Elasticsearch使用基础教程
下一篇: php之mvc框架演进过程详解