您的位置:首页 > 其它

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

①修饰全局变量时,改变全局变量的作用域,只能在本文件中被使用

②修饰函数时,改变函数的作用域,使函数只能在本文件中被调用
③修饰局部变量,改变变量的生命周期,直到程序运行结束,才释放空间(修饰后的变量存放在数据段)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: