![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
aze_hugo
这个作者很懒,什么都没留下…
展开
-
C语言中的函数定义及函数声明
函数声明是由编译器检测的,只要调用函数前对其声明即可。 因此: 如果函数 void a()并不存在 但在程序中调用了 a(),且在之前进行了函数声明void a() 此时编译程序(cc -c)时编译器不会报错,但生成可执行文件(cc -o)时会报错。#include<stdio.h>//函数可以重复声明//void myPrint();//void myPrint();int main(原创 2015-04-22 11:48:12 · 612 阅读 · 0 评论 -
关于字符数组、字符串、字符指针、字符指针数组
int main(){ char str1[]="abc"; char str2[]="a\0bc"; //字符数组(没有以'\0'结束) char str3[]={'a','b'}; char str4[]="哈"; /* 1.printf()中的%s占位符,在输出字符串时,只匹配到'\0'字符结束 2.strlen()函数计算原创 2015-04-26 20:44:41 · 302 阅读 · 0 评论 -
函数、指针、数组
void changeA(int *);int *getPoint();void changeArray(int array[]);int *getArray();int main(){ int a=10; changeA(&a); printf("a=%d\n",a); int *b; b=getPoint(); printf("*b=%d\n原创 2015-04-26 21:21:35 · 294 阅读 · 0 评论 -
指向函数的指针
void a();char *b();int c(int *,int);int main(){ /* 1. 函数的名称相当于函数的地址 2. 指向函数的指针,定义格式 指向函数的返回值 (*指针名称)(指向函数的参数列表) 3. 调用方式 1> (*指针名称)() 2> 指针名称() */原创 2015-04-26 21:46:06 · 273 阅读 · 0 评论 -
宏定义及带参数的宏定义
#include<stdio.h>//宏定义,通常用于定义常量,在代码转换成二进制文件时会将代码中的宏名称替换成值//#define 宏名称 值#define A 1//带参数的宏 fun(a,b)为宏的名称 a+b为宏的值#define fun(a,b) a*b//为了保证替换结果,最好加入()运算符#define fun2(a,b) ((a)*(b))/* 预处理指令有三种: 1原创 2015-04-27 19:54:21 · 766 阅读 · 0 评论 -
条件编译
#include<stdio.h>#define A 1int main(){ int a=1; /* 此语句有错误,条件编译指令为预编译指令 在预编译时程序还未运行,因此无法取得变量a的值 #if(a==1) printf("错误语句"); #endif */#if (A==1)//可以省略()写成 #if A==1原创 2015-04-27 20:25:47 · 435 阅读 · 0 评论 -
typedef关键字
#include <stdio.h>void print1(int,int);void print2(int,int);/* typedef 用于给类型定义别名 typedef 原类型名称 别名 *///基本数据类型typedef int myInt;typedef myInt myInt2;//指针typedef char * String;//结构体/* 1. struct S原创 2015-04-27 22:19:25 · 379 阅读 · 0 评论 -
extern、static关键字
extern、static 关键字在函数、全局变量、局部变量的作用各不相同。具体如下: a.c#include <stdio.h>/* extern void printA(); extern 可省略 外部函数声明 */void printA();void printB();void printD();//内部函数声明static void printC();//外部变量定义int原创 2015-04-27 23:19:31 · 415 阅读 · 0 评论 -
枚举enum
int main(){ /* enum 枚举名称{val0,val1...}; val0默认值为0,val1为1,依次类推 enum 枚举名称{val0=3,val1...}; 设置了val0的值为3,则val1为4,依次类推 */ enum Sex { male, female, un原创 2015-04-27 00:39:35 · 250 阅读 · 0 评论 -
指向指针的指针
int main(){ int a=10; //指向 变量a 的指针 int *p=&a; //指向 指针p 的指针 int **pp=&p; //指向 指向 指针p 的指针pp 的指针 int ***ppp=&pp; //*&p --相当于-- &*p printf("1.&a=\t%p , &p=\t%p \n &pp=\t原创 2015-04-24 15:08:40 · 414 阅读 · 0 评论 -
数组的定义
数组定义数据类型 变量名[大小];1.int a[10];a[0]=1;a[1]=2;...2.int a[10]={1,2,3};3.int a[]={1,2,3};4.int a[10]={[1]=1,[3]=3};列子int a[10]; a[0]=1; a[1]=2; int b[]={1,2,3}; int c[10]={[1]=1,[3]=3}原创 2015-04-26 22:07:24 · 422 阅读 · 0 评论 -
for循环作用域
for循环中,不同位置定义的变量作用域是不一样的。int main(){ int i=0; for(int i=0;i<3;i++) { printf("\tfor定义的i=%d\n",i); int i=5; { int i=10; printf("\t\t\tfor内部代码块定原创 2015-04-21 23:28:03 · 1122 阅读 · 0 评论 -
C语言中的作用域不明确错误
在C语言中编译器认为一个变量的作用域为距离其最近且包含其自身的{}内,但在一些特殊语法中(如 if-else 语句中),由于编码人员的不注意会造成变量的作用域不明确,从而导致编译器无法区分变量的作用域范围,则会报告作用域不明确编译错误。 为避免此类错误发生,在使用这些语句时应加入语句块{}避免错误发生。 如下所示:int main(){ /* if(1) int原创 2015-04-20 23:39:56 · 764 阅读 · 0 评论 -
C语言多文件编译
a.c文件//系统头文件使用<>#include <stdio.h>//自定义头文件使用""#include "b.h"int main(){ fun(); return 0;}b.c文件//b.c文件中存在一个fun()函数void fun(){ /* ... */}b.h文件//b.h文件用于存放b.c文件中函数的声明void fun(原创 2015-04-22 14:04:16 · 456 阅读 · 0 评论 -
C语言常用占位符及各进制数值定义
%d 十进制整数占位符%c 字符占位符%f(.2f) 浮点类型占位符(小数部分占2位)%i 十进制、八进制、十六进制整数占位符%p 地址占位符(指针占位符)%s 字符串占位符%x(X) 十六进制整数占位符%o 八进制整数占位符%% 输出%原创 2015-04-20 11:40:53 · 12079 阅读 · 1 评论 -
利用按位与(&)判断数字的奇偶性
int main(){ int num; int q; do { printf("请输入一个整数\n"); scanf("%d",&num); if(num & 1) { printf("这个数是奇数\n"); } else {原创 2015-04-23 18:02:45 · 636 阅读 · 0 评论 -
输出数字在内存中呈现的二进制数值
以下例子用于输出一个数字在内存中呈现的二进制数值。 其中有一些知识点需要注意:1.sizeof(num)用于获得num在内存中占用的字节数 2.<< 是二进制位左移操作 num<<1 --相当于-- num*2 num<<2 --相当于-- num*2*2 num<<n --相当于-- num*2^n(2的n次方)3.>> 是二进制位右移操作 num>>1原创 2015-04-23 18:58:48 · 1466 阅读 · 0 评论 -
C语言数据类型及内存占用
C语言数据类型包含:基本数据类型(int、char、float、double…)空类型(void)指针类型(*)构造类型(数组、结构体[struct]、公共体[union]、枚举[enum])其中基本数据类型在32及64位编译器中char类型占中**1**Byte、int类型占用**4**Byte、float类型占中**4**Byte、double类型占中**8**Byte。另外内存分配空原创 2015-04-20 13:47:47 · 732 阅读 · 0 评论 -
采用不同方式进行数值交换
int main(){ int n1=1; int n2=10; printf("原数值n1=%d,n2=%d\n",n1,n2); //采用中间变量方式交换数值 int temp=n1; n1=n2; n2=temp; printf("第一次交换后n1=%d,n2=%d\n",n1,n2); //采用加减法交换数值 n1原创 2015-04-23 17:51:14 · 290 阅读 · 0 评论 -
指针的类型
C语言中的指针类型用于告诉指针,其所指向的地址存放什么数据类型,而指针本身占用8个字节(64位编译器)的大小跟类型无关。 但对指针进行输入、输出操作时,指针的类型却至关重要。 例如输出时,如果指针定义为char类型,则指针会从所指向的地址至内存高位寻找1Byte(64位编译器)的内容输出。 如果定义为int类型,则会从所指向的地址至内存高位寻找4Byte(64位编译器)。int main()原创 2015-04-24 21:24:24 · 371 阅读 · 0 评论 -
C语言中的sizeof运算符
int main(){ int a=10; printf("%lu\n",sizeof(a)); printf("%lu\n",sizeof a); printf("%lu\n",sizeof(1)); printf("%lu\n",sizeof 1); printf("%lu\n",sizeof(int)); //错误写法 //prin原创 2015-04-20 22:02:42 · 677 阅读 · 0 评论 -
C语言中的逗号表达式
逗号表达式(,)也称逗号运算符,用于把多个表达式连接起来。int main(){ int a=(1+1,2+1,2+3); printf("%d\n",a); printf("循环结果为\n"); for(int i=0 ; i<3 ; printf("%d\n",i) , i++); return 0;}输出结果5循环结果为012原创 2015-04-21 22:44:25 · 420 阅读 · 0 评论 -
结构体struct
int main(){ /* 定义结构体类型 1.结构体占用空间大小为属性(成员)占用空间大小的和 1>如果结构体占用空间大小不是占用空间最大元素的倍数 则会自动补齐为倍数。 2>sizeof(p4.name)=8, sizeof(p4.age)=4, sizeof(p4.sex)=4 8+4+4=原创 2015-04-26 23:27:04 · 372 阅读 · 0 评论