C program basic
郝人牛语 当你成为C语言的高手,那么你很容易进入到操作系统的平台里面去;当你进入到操作系统的平台里去实际做程序时,就会懂得进行调试;当你懂得调试的时候,你就会发现能轻而易举地了解整个平台的架构。 这时候,计算机基本上一切都在你的掌握之中了,没有什么东西能逃得出你的手掌心。 ——《编程箴言》 梁肇新 23 置身于一片很白的那种草原上(全下着大雪),然后有个小亭子,然后里边有一个有一个香炉,然后我就披着个斗笠,就在那亭子(棚子),然后就卡阿卡卡卡敲键盘。感觉到很爽……如何能达到这样的感觉,要多敲。刚开始,很痛苦,一敲就会错。学任何课程,刚开始一敲程序就错,经过一个漫长的体力活,敲起来就会很快了(快乐)。让人看见你(感觉你)都很羡慕。敲那么快……(思路那么快)…… |
1.简单语句
C语言的基本结构
- # include <stdio.h>
- int main(void){
printf("hello world");
return 0;
}
进制表示
- //# 整数
//# 十进制:
//# 十六进制:0x 0X // 零x
//# 八进制:0 // 零
int x = 314
int x = 0603
int x = 0x603- //# 浮点数
//# float:
//# double:
float x = 3.14F; // 不加F,默认按double处理
float x = 3.14e3;- //# 字符:单引号
//# 字符串:双引号
输出函数printf
- int i = 10; // 把i的空间存储数字10的二进制代码
printf("%d\n", i); // 以十进制格式,输出i存储的数据
/* 输出控制符
* %d
* %ld
* %c
* %s
* %f
* %lf
* %o 小写‘呕’
* %O 大写‘呕’
* %x 十六进制输出
* %X 字母大写~
* %#x 带前缀~
*/
int i = 314;
printf("number = %d\n", i);- printf("%x \t%%x\n", i);
printf("%X \t%%X\n", i);
printf("%#x \t%%#x\n", i);- /* 输出内容如下
* [view@file 03]$ ./a.out
* number = 314
* 13a %x
* 13A %X
* 0x13a %#x
*/
输入函数scanf
- //# 格式控制符与上边一致
int i;- printf("Please input a number: ", &i);
scanf("%d", &i);
printf("number is %d\n", i);
三目运算符
根据表达式(expression)的值,使整个表达式计算为第二个或第三个操作数。
- /* a ? b : c
* b,c必须满足以下三个之一:
* 1.数字类型
* 2.兼容的结构体、联合体
* 3.指向相同类型的指针
*/
逗号表达式
用途:前面的表达式产生后边表达式的值,表达式的结果是最后一个表达式的值。
- i = (x++, y = x * x, z = x + y, z * z - x * y);
2.流程控制
2.1.选择结构
if语句
- // if简单用法
if (x == 10)
puts ("x is 10");
// if...else...
if (x == 10)
puts ("x is 10");
else
puts ("x is not 10");
// if...else if...else
if (x == 1)
puts ("x is 1");
else if (x == 2)
puts ("x is 2");
else
puts ("x is something else");
switch语句
- // 检查test-expression表达式(x)
switch (x)
{
case 0:
puts ("x is 0");
break;
case 1:
puts ("x is 1");
break;
default:
puts ("x is something else");
break;
}
2.2.循环语句
while语句
- int counter = 0;
while (counter < 10)
printf ("%d ", counter++);
do语句
- int x = 0;
do
printf ("%d ", x++);
while (x < 10);
for语句
- int x;
for (x = 0; x < 10; x++)
printf ("%d ", x);
3.数组
声明数组
声明数组时,需要指定其数据类型、数组名称、成员个数。(数组长度是个固定值)
- int first_array[14];
初始化数组
- // 声明时初始化
int first_array[14] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
// 初始化起始3个元素,其他元素为默认值0
int first_array[14] = { 1, 2, 3, 4 };
// 使用赋值运算符赋值
int first_array[10] = { [4] = 5, [5] = 9 }; // 等于下边效果
int second_array[10] = { [0 ... 3] = 0, [4] = 5, [5] = 9, [6 ... 9] = 0 };
// 不直接指定大小,初始化所有成员。数组大小由成员数量决定
int first_array[] { 1, 2, 3, 4, 5, 6};
数组的存储是连续的……
- int arraylist[4] = {1, 2, 3, 4}, i;
for(i=0; i<4; i++)
printf("arrayList[%d]: 0x%x\n", i+1, (unsigned int)&(arraylist[i]));
printf("arrayList: 0x%x\n", (unsigned int)arraylist);
上边程序运行后的结果
- [view@payqa1 000 C pro]$ ./a.out
arrayList[1]: 0xcaefeb80
arrayList[2]: 0xcaefeb84
arrayList[3]: 0xcaefeb88
arrayList[4]: 0xcaefeb8c
arrayList: 0xcaefeb80
初始化定义一个二维数组
- /* 二维数组array[i][j],看作为一个i行j列的矩阵。
*/
int two_dimensions[2][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10} };
例子:定义两个数组,计算数组的长度
- // 定义数组、计算长度
int first_array[3][5] = { // 二维数组的长度是……
{ 1, 2, 3, 4, 5 },
{ 0 },
{ 0, 0, 0, 0, 0 }
};
printf("first_array %d\n", sizeof(first_array)/sizeof(first_array[0]));- int second_array[5] = { 1, 2, 3, 4, 5 };
printf("second_array %d\n", sizeof(second_array)/sizeof(second_array[0]));
/* 数组长度的计算方法
* sizeof()表示获取到变量的字节值……
*/
// 执行后的结果
first_array 3
second_array 5
4.函数
函数声明时,指定函数名、参数列表、函数返回值。
- /* 函数名:length
* 参数列表:只有一个
* 返回值:int
*/
int length(int x);
定义函数
- int length(int x) {
int i, y;
i = ( y = x*3 + 4, y + 6 );- return i;
}
【指针】
指针用来保存常量或变量的内存地址。任何数据类型,包括基本类型和自定义类型,都可以创建一个指针,该指针保存该类型实例的内存地址。
- # include <stdio.h>
- void f(int *i) { // 被调函数通过指针修改主调函数的值
*i = 330;
}- int main(void) {
int i = 9;- f(&i);
printf("i = %d\n", i);- return 0;
}
【数组长度】
- # include <stdio.h>
int countLength(int *p, int lang) {
int len = 0;
len = (int)lang/sizeof(p[0]); // 数组的总大小 / 元素大小- return len;
}- int main(void) {
//int arrayList[5] = { 1, 2, 3, 4, 5 };
int arrayList[2] = { 1, 2 }; // 函数外计算数组总长
printf("in function, length is %d\n.", countLength(arrayList, sizeof(arrayList)));- return 0;
}
【数组排序】
- # include <stdio.h>
// declear functions.
void sort(int *,int,int);
void display(int *,int,int);
int mk(int *);
// define functions.
void sort(int * p,int len,int k)
{
int t,i,j;
for(i=0;i<len;i++)
for(j=i+1;j<len;j++)
if (k == 0)
if (*(p+i) > *(p+j))
{
t = *(p+i);
*(p+i) = *(p+j);
*(p+j) = t;
}
else if (k == 1)
if (*(p+i) < *(p+j))
{
t = *(p+i);
*(p+i) = *(p+j);
*(p+j) = t;
}
else
printf("The value of \"k\" is error when function \"sort()\" is running.");
return;
}
void display(int * p,int len,int k)
{
if (k == 0)
printf("从小到大排序\n");
else if (k == 1)
printf("从大到小排序\n");
else if (k == 2)
printf("没有排过顺序的数组\n");
int i;
for (i=0;i<len;i++)
{
printf("array[%d] = %d\t",i,*(p+i));
if (i == (len-1))
printf("\n");
}
return;
}
int mk(int * p)
{
int len,i;
printf("输入需要产生的数组元素的个数:");
scanf("%d",&len);
for (i=0;i<len;i++)
{
printf("请输入第%d个元素的数值:",i+1);
scanf("%d",&( *(p+i) ));
}
;
return len;
}
int main(void)
{
//int a[10] = {33,234,227,36,1,22,13,8,9,7},i,k=2;
int * a;
int lang,k = 2;
lang = mk(a);
display(a,lang,k);
k = 0;
sort(a,lang,k);
display(a,lang,k);
k = 1;
sort(a,lang,k);
display(a,lang,k);
return 0;
}
5.结构体
定义结构体,使用关键字 struct 跟上成员声明,放在一对大括号内、以分号结尾。
- struct memberMem {
char hostname[50];
char ipAddress[50];
char position[30];
float total, used;
float cache, buffer;
float swapIn, swapOut;
}; // 末尾有个分号
声明结构体变量
- struct memberMem back, app47, app160, task;
结构体变量赋值
- back.total = 8.0F;
back.used = 1.23F;
printf("memory total is %f, used is %f.\n", back.total, back.used);
C program basic的更多相关文章
- tesseract api C++使用例子
转自:https://code.google.com/p/tesseract-ocr/wiki/APIExample APIExample API examples Updated Aug 12, 2 ...
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十二)之Error Handling with Exceptions
The ideal time to catch an error is at compile time, before you even try to run the program. However ...
- Flink Program Guide (1) -- 基本API概念(Basic API Concepts -- For Java)
false false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-n ...
- Flink Program Guide (9) -- StateBackend : Fault Tolerance(Basic API Concepts -- For Java)
State Backends 本文翻译自文档Streaming Guide / Fault Tolerance / StateBackend ----------------------------- ...
- Basic Tutorials of Redis(2) - String
This post is mainly about how to use the commands to handle the Strings of Redis.And I will show you ...
- penpyxl basic function demo code
Openpyxl basic function demo code demo code: #!/usr/bin/env python # -*- coding: utf-8 -*- "&qu ...
- Visual Basic 2012 借助DataGridView控件将SQL server2012 数据导入到Excel 2010
摘 要: SQL Server 2012 数据和Excel 2010之间的连接和数据的传输,本篇文章主要针对的是SQL Server 2012 数据导入到Excel 2010文件中.Excel软件对 ...
- 1.3 PROGRAM DEVELOPMENT ENVIRONMENT
1.3 PROGRAM DEVELOPMENT ENVIRONMENT 1.4 WIN32 EXECUTEABLE FILE FORMAT We should also know that compl ...
- 1.Basic Techniques and Knowledge
1.1 BASIC WINDOWS PROGRAMMING IN C/C++ 1.Hello World Version 1:Starting Your Browser Let's get down ...
随机推荐
- ML平台_PAI参考
阿里云机器学习PAI(Platform of Artificial Intelligence)是一款一站式的机器学习平台,包含数据预处理.特征工程.常规机器学习算法.深度学习框架.模型的评估以及预测这 ...
- 修改machine.config遇到System.Net.ServicePointManager 的类型初始值设定项引发异常
<system.net>节点应该在</configuration>上面添加,即config页尾. 而不是在<configuration> 后面添加. 在</s ...
- 黄聪:VPS服务器轻松备份工具配置
- SpringCloud之服务注册与发现Eureka(一)
Eureka是Spring Cloud Netflix微服务套件中的一部分,可以与Springboot构建的微服务很容易的整合起来.Eureka包含了服务器端和客户端组件.服务器端,也被称作是服务注册 ...
- vc++获取网页源码之使用类型库(TypeLib)生成包装类
1.在MFC项目名称上 右击->添加->选择Visual C++下的MFC->TypeLib中的MFC类->添加 可以从注册表表中共或是文件中根据相应的接口生成对应的包装类 效 ...
- Consul实践指导-DNS接口
DNS是consul提供的主要查询接口之一.DNS接口允许应用程序在没有与consul高度集成的情况下使用服务发现. 例如:替代consul的HTTP API请求,主机能够通过名字查找直接使用DNS服 ...
- [UE4]蓝图调试
1.蓝图下断点:选择蓝图节点按F9下断点:再按一下F9就会去掉断点. 2.游戏运行到断点会自动这暂停,鼠标移到某个变量上面,会显示该变量的值. 3.按F10执行下一步. 4.蓝图调试没有跳出函数的功能 ...
- Android点赞音效播放
/** * 音效播放 */ private SoundPool mPool; /** * 音效id */ private int voiceID; voiceID = initSoundPool(); ...
- CTF PHP文件包含--session
PHP文件包含 Session 首先了解一下PHP文件包含漏洞----包含session 利用条件:session文件路径已知,且其中内容部分可控. 姿势: php的session文件的保存路径可以在 ...
- Java基础知识_毕向东_Java基础视频教程笔记(11-12 多线程)
11天-01-多线程进程:是一个正在执行中的程序.每个进程执行都有一个执行顺序.该顺序是一个执行路径或者叫一个控制单元.线程:是进程中的一个独立的控制单元,线程在控制着进程的执行.一个进程至少有一个线 ...