C 语言教程 在线

1494C 数组

一个小知识点:

在我们没有明确数组的元素个数时,在程序中想知道数组单元个数可以使用 sizeof(a)/sizeof(a[0]), sizeof(a) 是得到数组 a 的大小,sizeof(a[0]) 是得到数组 a 中单个元素的大小(因此可以不必要是a[0],a[i]都行),eg:

#include<stdio.h>

int main(int argc,char *grgv[])
{
    int a[]={1,2,3,4,5};
    int b;
    b=sizeof(a)/sizeof(a[0]);
    printf("数组元素个数为:%d",b);
    return 0; 
}

1493C 数组

指针与数组的区别

char *str="Hello";
char arrgs[]="Hello";

字符数组:

char *p=(char*)&arrgs == char *p=arrgs ;
char *p=(char*)(&(arrgs[0])) == &arrgs == arrgs;

字符串指针:

char *p=(char*)&str != str; str==str[0] =='H'

得出结论字符数组的 首地址可以用 arrgs ,&arrgs,来表示并且它们相等,

但是指针&str和str是不同的,当遇到字符串指针时候要注意处理方式;

1492C 作用域规则

C 的形参与实参

在 C 语言中,形参与实参虽然很简单,但是,是大家比较容易混淆的一个点,这里将为大家详细的讲解。

概念:从字面上理解,所谓形式参数即只只是声明了一个作为参数的变量,并未直接进行赋值使用,而实际参数则相反。

如下例

#include <stdio.h>

int test(int,int); // 形参,只声明

int main()
{
    int a,b;
    printf("%d",test(5,3)); // 实参,已赋值
}

int test(int a,int b) // 形参
{
    a=a+b;
    return a;
}

像上面在 test() 函数里只声明了最为参数的变量,而 main() 函数里则对它赋了值。

1491C 函数

1、函数的调用:由于程序是从上向下执行,所以函数要先声明,后调用。这种先后是文档中所处位置的先后,不是时间的先后。以下写法为正确的:

#include<stdio.h>

void f(void)  /*定义函数*/
{
    printf("我是一个函数,我将在主函数中输出\n");
}

int main(void)
{
    f();  /*调用函数*/
}

在上面这个实例中,在主函数中调用了函数 f(), 而函数的声明是在调用以前。

2、这种写法是错误的

#include<stdio.h>

int main(void)
{
    f();/*调用函数*/
}

void f(void)  /*定义函数*/
{
    printf("我是一个函数,我将在主函数中输出\n");
}

在上面这个实例中,在主函数中调用了函数 f(), 而函数的声明却在调用之后。由于函数执行时是从上往下执行的所以,这写法是错误的。

如果函数非要写在主函数之后可以在主函数之前加入一个函数的前置声明。

前置声明如下:

#include<stdio.h>

void f(void); /*前置声明*/
int main(void)  
{
    f();  /*调用函数*/
}

void f(void)  /*定义函数*/
{
    printf("我是一个函数,我一定要先声明后调用\n");
}

1490C 函数

占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号,广泛用于计算机中各类文档的编辑。

格式占位符(%)是在C/C++语言中格式输入函数,如 scanf、printf 等函数中使用。其意义就是起到格式占位的意思,表示在该位置有输入或者输出。

  • %d, %i 代表整数
  • %f 浮点
  • %s 字符串
  • %c char
  • %p 指针
  • %fL 长log
  • %e 科学计数
  • %g 小数或科学计数。
  • %a,%A 读入一个浮点值(仅C99有效)。
  • %c 读入一个字符。
  • %d 读入十进制整数。
  • %i 读入十进制,八进制,十六进制整数。
  • %o 读入八进制整数。
  • %x,%X 读入十六进制整数。
  • %s 读入一个字符串,遇空格、制表符或换行符结束。
  • %f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。
  • %p 读入一个指针。
  • %u 读入一个无符号十进制整数。
  • %n 至此已读入值的等价字符数。
  • %[] 扫描字符集合。
  • %% 读 % 符号

实例:

scanf("%d,%d,%d",&a,&b,&c); // 从键盘输入三个整数,用逗号分隔  
scanf("%c", &s);   // 从键盘输入一个字符  
scanf("%f", &f);   // 从键盘输入一个浮点型数据  
printf("%d\n",a);  // 输出一个整数  
printf("%f\n",b);  // 输出一个浮点数  
printf("%s\n",c);  // 输出一个字符, 其中\n表示换行