C语言比较容易忽略的知识点

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

猜你喜欢

转载自blog.csdn.net/qq_28445515/article/details/81317848