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); 


0 0
原创粉丝点击