c 语言基础(除指针)
2018-01-27 16:27
176 查看
一、数据类型
32位操作系统
类型 字节
int 4
float 4
double 8
char 1
short(int) 2
long (int) 4
1字节 = 8位
求数据类型长度 sizeof()
求字符串长度 strlen() strlen使用时应加上头文件(#string.h)遇到\0结束
二、const
修饰只读变量,不能通过变量修改对应内存中的值
三、volatile
防止编译时候被优化
四、数据的表现形式:常量,变量
字符型数据 \n 表示换行 \t 表示Tab (这些都是转义字符)
字符串常量 以\0结尾 但不显示
条件运算符 max = (a > b)? a : b
五、运算符的优先级
函数符号() > 数组下标[] > 单目运算符 > 位移运算符 > 关系运算符 > 逻辑运算符 > 三目运算符
eg. int a = 4;
a+=a++ = 9
a+=++a = 10
++a+=a = 11
++a+=a++ = 11
++a+=++a = 12
printf("%6.2f\n",a); 共输出6位,其中小数占2位
六、switch(表达式)
{
case 常量1 : 语句1; break;
case 常量2 : 语句2; break;
。
。
。
。
default : break;
}
七、continue和break的区别
continue: 跳过本次循环,执行下一次循环
break: 跳出整个循环
八、数组 a[]
1、a为数组名,也是地址 &a为地址 (printf输出地址时用%p)
(a是首元素的地址,&a是数组的地址)
eg. int a[4]; sizeof(a) = 16;
a 0xbfe5b010
&a 10
a+1 14 (a的步长是一个元素)
&a+1 20 (&a的步长是一个数组)
eg. 冒泡排序法
for(i = 0; i < n -1; i++)
{
for(j = 0; j < n - i -1; j++)
{
if(a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + i];
a[j + 1] = t;
}
}
}
2、求数组中有多少元素int a[] = {........}
n = sizeof(a) / sizeof(a[0])
求字符串长度 strlen()
3、二维数组 a(首行地址) a+1 指向下一行
&a(数组的地址)
&a+1 加了一组数组
a[0] (第一个元素的地址) a[0] + 1 下一个元素
*a(*是取值的意思) *a + 1 加一个元素
a[0] = *(a + 0) a[1] = *(a + 1) 第二行第一个元素
eg.数组a[3][4] 哪个不能表示a[1][1] (D)
A、*(a[1] + 1) B、*(&a[1][1])
C、(*(a + 1))[1] D、*(a + 5)
4、字符数组
char a[11] = "helloworld";
printf("%s\n",a);(要输出字符串,后面必须跟地址a就是一个地址)
九、处理字符串数组
1、strcat (str1,str2) (str1的长度不能比str2小)
2、strcpy (str1,str2) (用str2将str1覆盖)
strncpy (str1,str2,n) n表示复制几个字节
给数组复制不合法赋值 str1 = “hello” str1 = str2
3、strcap(str1 , str2)
strcap (str1, str2) > 0 则str1 > str2
十、函数
形参,实参的个数和类型要保持一致
①通过函数名找到函数的入口地址
②给形参分配空间
③传值 1:值传递 2:地址传递
④执行函数体
⑤返回
⑥释放空间(栈上的空间)
变量的存储类型
1、auto
2、register
3、extern int num;(声明不需要分配内存) 只有全局变量才能在其他文件里调用
eg. main.c
#include <stdio.h>
int num = 1;
int main()
{
print();
return 0;
}
print.c
#include <stdio.h>
extern int num;
void print()
{
printf("%d\n",num);
}
编译 gcc print.c main.c -o main
4、static
①修饰全局变量时,改变全局变量的作用域,只能在本文件中被使用
②修饰函数时,改变函数的作用域,使函数只能在本文件中被调用
③修饰局部变量,改变变量的生命周期,直到程序运行结束,才释放空间(修饰后的变量存放在数据段)
32位操作系统
类型 字节
int 4
float 4
double 8
char 1
short(int) 2
long (int) 4
1字节 = 8位
求数据类型长度 sizeof()
求字符串长度 strlen() strlen使用时应加上头文件(#string.h)遇到\0结束
二、const
修饰只读变量,不能通过变量修改对应内存中的值
三、volatile
防止编译时候被优化
四、数据的表现形式:常量,变量
字符型数据 \n 表示换行 \t 表示Tab (这些都是转义字符)
字符串常量 以\0结尾 但不显示
条件运算符 max = (a > b)? a : b
五、运算符的优先级
函数符号() > 数组下标[] > 单目运算符 > 位移运算符 > 关系运算符 > 逻辑运算符 > 三目运算符
eg. int a = 4;
a+=a++ = 9
a+=++a = 10
++a+=a = 11
++a+=a++ = 11
++a+=++a = 12
printf("%6.2f\n",a); 共输出6位,其中小数占2位
六、switch(表达式)
{
case 常量1 : 语句1; break;
case 常量2 : 语句2; break;
。
。
。
。
default : break;
}
七、continue和break的区别
continue: 跳过本次循环,执行下一次循环
break: 跳出整个循环
八、数组 a[]
1、a为数组名,也是地址 &a为地址 (printf输出地址时用%p)
(a是首元素的地址,&a是数组的地址)
eg. int a[4]; sizeof(a) = 16;
a 0xbfe5b010
&a 10
a+1 14 (a的步长是一个元素)
&a+1 20 (&a的步长是一个数组)
eg. 冒泡排序法
for(i = 0; i < n -1; i++)
{
for(j = 0; j < n - i -1; j++)
{
if(a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + i];
a[j + 1] = t;
}
}
}
2、求数组中有多少元素int a[] = {........}
n = sizeof(a) / sizeof(a[0])
求字符串长度 strlen()
3、二维数组 a(首行地址) a+1 指向下一行
&a(数组的地址)
&a+1 加了一组数组
a[0] (第一个元素的地址) a[0] + 1 下一个元素
*a(*是取值的意思) *a + 1 加一个元素
a[0] = *(a + 0) a[1] = *(a + 1) 第二行第一个元素
eg.数组a[3][4] 哪个不能表示a[1][1] (D)
A、*(a[1] + 1) B、*(&a[1][1])
C、(*(a + 1))[1] D、*(a + 5)
4、字符数组
char a[11] = "helloworld";
printf("%s\n",a);(要输出字符串,后面必须跟地址a就是一个地址)
九、处理字符串数组
1、strcat (str1,str2) (str1的长度不能比str2小)
2、strcpy (str1,str2) (用str2将str1覆盖)
strncpy (str1,str2,n) n表示复制几个字节
给数组复制不合法赋值 str1 = “hello” str1 = str2
3、strcap(str1 , str2)
strcap (str1, str2) > 0 则str1 > str2
十、函数
形参,实参的个数和类型要保持一致
①通过函数名找到函数的入口地址
②给形参分配空间
③传值 1:值传递 2:地址传递
④执行函数体
⑤返回
⑥释放空间(栈上的空间)
变量的存储类型
1、auto
2、register
3、extern int num;(声明不需要分配内存) 只有全局变量才能在其他文件里调用
eg. main.c
#include <stdio.h>
int num = 1;
int main()
{
print();
return 0;
}
print.c
#include <stdio.h>
extern int num;
void print()
{
printf("%d\n",num);
}
编译 gcc print.c main.c -o main
4、static
①修饰全局变量时,改变全局变量的作用域,只能在本文件中被使用
②修饰函数时,改变函数的作用域,使函数只能在本文件中被调用
③修饰局部变量,改变变量的生命周期,直到程序运行结束,才释放空间(修饰后的变量存放在数据段)
相关文章推荐
- C语言基础知识之(十五):指针和函数
- C语言基础 9 指针 字符串
- C语言基础之指针取地址问题
- C语言基础之指针1
- C语言基础:C语言指针(5) - 指针和数组
- 黑马程序员-----------C语言基础-----------指针(一)
- 【C语言基础】结构体指针
- c语言基础学习07_指针
- C语言基础(五)- 指针
- C语言基础及指针⑦结构体与指针
- C语言基础-05-指针
- C语言基础学习之指针操作字符串反转
- 【C语言基础一百题10】71-86题指针和函数
- C语言基础(六)指针和多维数组
- C语言基础与提高之指针
- C语言基础-指针深入16
- 黑马程序员--C语言基础之--数组、指针的基础知识
- C语言基础-指针和函数的补充21
- C语言基础学习3:指针
- [C语言基础] 数组与指针之间的引用