欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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,没有半点影响。

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

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

正确的写法

#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;
}

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

* 0x34 = * 0x56
//地址内容进行交换

QQ_1047635442

相关标签: 指针