C语言:very first

C语言--基本结构-- 

1.main函数(所有C语言代码都要包含)

main函数 标准格式:

<可选返回值类型> main (<可选参数>) {
    <可选的过程语句或函数调用>;
}

如果没有指定 返回类型,就使用 int 型。有些情况下因为 未指定int 或 指定void 而报错。

C语言语句中,必须有 过程语句(一些 操作数据或变量 的命令)与 函数调用。

命令行参数下,使用下列格式:

<optional return value type> main (int argc, char * argv[]) {

argc 是提供给 主函数的 参数个数,
argv 是参数的 字符串数组的 指针。 保存 形参(字符串)

程序名 存放在 偏移地址argv[0] 处。

void 声明 函数 无返回值 或 无参数,声明 无类型指针。

2.函数

函数格式:

<可选返回值类型> 函数名 (<可选函数参量>) {
}

该语句 告知 返回值的存在 以及 是否调用实参 填补 形参。

函数调用格式:

<用于存储返回值的可选变量 =>函数名(参数(如果由函数签名(上述函数格式)调用));

举例:

#include <stdio.h>  //先添加 头文件,他们包含了 调用函数的声明, 
#include <stdlib.h>  //如printf 属于 stdio.h, exit 属于 stdlib.h。
//如果不知道 动态链接函数的 头文件 时,请查阅手册 [man 函数]。
int main(void) {  //main里指定 void, 这种情况下 不需给变量传递实参替补。
    int val_x;  //创建 变量x
    val_x = foo();  //调用foo 函数, 返回值 赋予给 x.
    printf("the value returned is: %d\n", val_x);  //printf 在屏幕上显示 foo 返回值 8,使用 格式字符串%d, 可以把 x  作为 十进制。
    exit(0);
}
int foo(){  //此处定义函数 foo
    return 8;  //函数的返回值 为 8.
}

函数调用 修改了 程序流,这时 程序执行逻辑 暂时跳转到 函数中(如上述 跳转到 foo 签名代码块。执行完 被调函数 后, 流程 返回到 调用指令下 虚拟内存位置的 主调函数。

3.变量

int有符号整数值可变,与 计算机位数 相关
float有符号浮点数4字节
double较大浮点数8字节
char单个字符1字节

变量 会被 预先分配 固定长度的内存。
注:sizeof 函数 可以获取 确切的内存长度。

变量 在代码起始处 定义,定义格式:

<变量类型><变量名>=<值>

修改变量值 格式:

目的值 = 原值 <附加可选操作>

4.printf 函数 (在libc库中)

直接格式:printf(<字符串>);
格式化格式:printf(<格式化符号>, <一组变量/值>);

格式化符号

%n不予显示
%d十进制
%s字符串值
%x十六进制值
%f浮点值

5.scanf函数

该函数 用于 获取用户输入。
格式:

scanf(<格式化符号>, <一组变量/值>);

使用时,在 变量名 前 加&; 表示 将值 存入 变量指代的内存地址。 如

scanf("%d", &number);

6.循环 和 条件判断:for & while 与 if else

7.注释://单行 /**/多行

8.编译 
注:编译器 通过 链接 将各目标码文件 链接为 可执行二进制文件。

gcc 为 GNU C Compiler;

-o  <filename> 使用指定文件名保存编译后的二进制代码。默认会将输出保存为a.out
-S生成一个包含汇编指令的文件,文件扩展名为.s 
-ggdb生成额外的调试信息,在使用GNU调试器(gdb时比较有用)
-c编译但不进行链接。生成一个带有.o扩展名的目标文件
-mpreferred-stack-boundary=2使用DWORD长度的栈来编译程序,这简化了学习时的调试过程
-fno-stack-protector禁用栈保护(gcc 4.1引入)。在学习缓冲区溢出时,这是一个有用的选项
-z execstack启用可执行栈。在学习缓冲区溢出时,这是一个有用的选项






 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值