C语言学习笔记2
来源:互联网 发布:灵格斯 for mac 编辑:程序博客网 时间:2024/05/16 15:20
内容为数组以及结构体
数组以 char st1[3] = {a,b,c};为例
数组是一个集合,在计算机内存空间中是一串连续的地址空间,可以存储多个同类型的变量,只能同类型
数组定义的方式:数组类型 数组名[长度] = {元素1,元素2,...};//如 char str[3] = {a,b,c};
数组的一些类型:
int array1[4] = {1,4,5,7}; //该数组内有4个元素
int array2[] = {1,5}; //该数组内有2个元素,中括号内不标明长度则按元素个数来算
int array3[10] = {1,3,6,7}; //该数组内有10个元素,但是只标明了前4个,所以后面6个元素都为0
float array4[] = {3.9,45]; //浮点型数组允许整数
在C语言中,数组的下标是从0开始的,
例如:st1[0] = a,st1[1] = b,st1[2] = c
求数组元素的个数方法:如 int count = sizeof(st1) / sizeof(char);
输出数组的方法: printf("st1[%d] = %d\n",i,st1[i]);
随机数的产生:调用头文件 #include <stdlib.h>
int x = arc4random() % n + 1; n为该范围内的数,x表示产生的随机数
冒泡顺序算法:将第一项数与第二项数比较,大的一项与下一项比较,小的一项打印,直到比较次数为元数个数减一次
如一个数组arraynum[ i ],元素个数为count,排序循环,外层循环为趟数,比数组元素个数少一 ;
for (int i = 0 ; i< count ; i++) { //一趟比较下来不一定完成,所以需要比较最大趟数
for (int j = 0 ;j < count - 1 - i ;j++ ) { //
if( st1[ j ] > st1[ j+1 ]) {
int temp = st1[ j ];
st1[ j ] = st1 [ j+1 ];
st1[ j+1 ] = temp;
}
}
}
printf("冒泡排序后的值为:\n");
for ( int = i;i<count ;i++) {
printf("st1[%d] = %d\n",i,st1[i]);
}
字符数组 和 字符串数组
字符数组中,如果花括号提供的字符个数大于数组长度,则按语法错误处理
如果小于数组长度,则只将这些字符数组中前面那些元素算上,其余的元素自动定位空字符 '\0'
字符数组初始化的另一种方式:
char st1[7] = "Hello!"; 等价于 char st2[7] = {'H','e','l','l','o','!',,'\0','};
需要注意,在char st1[7] = "Hello!" 中,末尾还有一个末端字符 '\0'
如 scanf ("%s",st1); 数组不需要取地址符
printf("%s\n",st1); 这种输出不能输出存储中空格以后的数
\s表示字符串输出
字符串的一些函数,包含在 #include <string.h> 头文件中
strcpy (st1,st2); 表示将st2中的元素拷贝到st1中,包括目断字符 ‘\0’,但是需要注意st1空间够大
strcat (st1,st2); 可以将st2中的内容追加到st1的末端,并且将st1的目断 '\0' 去掉 ,同样需要保证空间够大
strlen (st); 可以返回字符串st的长度,但不包括'\0' ,但是需要强制转换为整型:int w = (int)strlen(st)
数组作为函数参数声明调用的时候,不将数组重新布置,可当做全局变量来使用
二维数组:
如 int arr1 [2][3] = {{1,2},{3,4},{5,6}};
等价于 int arr1 [2][3] = {1,2,3,4,5,6};
访问二维数组可以用2个for循环嵌套
结构体:类似枚举。可以定义不同数据类型的集合
结构体的定义:
struct 结构体名称(最好大写) {
类型 变量1;
类型 变量2;
...
}; //注意:结构体定义,在花括号后面加分号
结构体定义在main函数前面
也可以用第二种方式定义结构体:
typedef struct {
char name[100];
int age;
float score;
}Stedent;
结构体变量的初始化:
struct 结构体名 变量名 = {值1,值2,...};
取结构体元素的时候用 '.'
printf ("%s\n",st.name);
printf ("%d\n",st.age);
printf ("%f\n",st.score);
求结构体占内存字节数:
int length = sizeof(char)*100 + sizeof(int) + sizeof(float);
printf("%d\n",lenth);
用户自己开辟内存,可以使用malloc函数,需要调用 #include <stdlib> 头文件中
char *theName = (char*) malloc (sizeof)(char)*100;
char *tmp = "张三";
theName = tmp;
student.name = theName;
printf("%s\n",student.name);
- C语言学习笔记(2)
- C语言学习笔记2
- c语言学习笔记2
- C语言学习笔记2
- C语言学习笔记2
- C语言学习笔记2
- c语言学习笔记2
- c语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C 语言学习笔记
- C语言学习笔记
- Django学习记录之Django 1.8 教程(我只是官网的搬运工)Tutorial Part 1
- 【LeetCode】300 Longest Increasing Subsequence
- 代码整洁之道
- java实现摄像头调用,处理视频流
- Java验证手机号码和电话号码的正则表达式
- C语言学习笔记2
- JSP 最佳实践: 使用 JSP include 机制改进外观
- JAVA中堆栈和内存分配原理
- 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit
- Unreal3 window下内存管理实现详解
- JSP 最佳实践: 使用JSTL来更新JSP页面
- 基于统计的分词技术
- php js特殊字符处理
- 百度地图Android SDK报错:Error inflating class com.baidu.mapapi.map.MapView