c语言基础——数组和函数

数组:

    int a[10]:数组里所有元素都是整形,a时数组名,10为数组的长度,有10个元素。

【错误示范】:int  a[k]:c语言不允许对数组大小作动态意义,即数组的大小不依赖于程序运行过程中变量的值。

【常见错误】:float a[0]  //数组大小为0没有意义。

                            int b(2)(3)     //不能使用圆括号

                            int k ,a[k]       //不能使用变量名

字节序:不确定高低地址,数组的字节序是确定的。

大端字节序:高字节存放在低地址,低字节cun'存放在高地址。

小端字节序:高。。。。高 。。,低。。。。。。。低。。。

思考:判断机器的字节序???

            大小端转换???

如何使用一个数组?

#include<stdio.h>
int b[5];
int main()
{
    int array[5];int i;
    for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
        {
             printf("%d",a[i]);
        }
             printf("\n");
             for(i=0;i<5;i++)
             {
                 printf("%d",b[i]);
             }
                 printf("\n");
                 return 0;               

数组中未初始化的全局变量0;

主函数中,未初始化的的局部变量是垃圾值(随机值)

//int array[5]={0,1,2,3,4};

//  int array[5]={1,2};//对部分元素初始化,其他未初始化元素为0

// int array[]={1,2,3,4,5};

printf("%p\n",&a[0][0]);//首元素的地址,单位4字节

printf("%p\n",a[0]);//首行元素的地址,单位4字节

printf("%p\n",&a[0]);//首行地址,单位12字节

printf("%p\n",a);//首行的地址,单位12字节

******************************************************

printf("%p\n",&a[0][0]+1);//首行第二个元素的地址

printf("%p\n",a[0]+1);//首行第二个元素的地址,单位4字节

printf("%p\n",&a[0]+1);//第二行的地址,单位12字节

printf("%p\n",a+1);//第二行的地址,单位12字节

printf("%p\n",&a+1);............................单位48字节

*(a+x)=[x]

字符串处理函数

1.strcat 函数(连接函数)

#include<stdio.h>

#include<string.h>

int main()

{

    char str[20]="hello";

    char ptr[20]="world";

    strcat(str,ptr);//把字符串ptr连接到str的后面,把str 变成helloworld

    printf("%s\n",str);

    return 0;

}

2.拷贝函数(strcpy):

    char str[20]="hello";

    char ptr[20]="world";

    strcpy(str,ptr);//字符串拷贝函数,把ptr指向的字符串拷贝到str里。

    printf("%s\n",str);

    strncpy(str,ptr,3);//只拷贝前三个字符。

字符串赋值的三种方法:

 1 char str[20]="hello";

 2 char str[20];

    str[0]='h';str[1]='e'...........

3 strcpy(str,"hello");

【错误】:char str [20];

                    str="helloworld";

字符串比较:(根据字母排序比,第一个字母相同的就比较第二个)

  char str[20]="hello";

   char ptr[20]="world";

if(strcmp(str,ptr)==0)

{

    printf("字符串相等\n");

}

else if (strcmp(str,ptr)>0)

{

    printf("%s 大于 %s\n",str,ptr);

}

else if(strcmp(str,ptr)<0)

{

      printf("%s 大于 %s\n",str,ptr);

}

if(strncmp(str,ptr,1)<0)

{

      printf("%s 大于 %s\n",str,ptr);

自定义函数:

    函数类型    函数名(形式参数类型说明表)

{          声明部分

            执行部分

}

调用函数调用过程:

1.通过函数名找到函数的入口地址(函数名就是地址)

2.给形参分配空间

3.传参,传值(把实参传给形参)(值传送,地址传送)

4.执行函数体

5结果返回到调用它的地方

6。释放空间(栈空间)

static三个作用:1.修饰全局变量,改变变量的作用域,只能在当前文件夹中被调用,其他文件不能调用

                              2.修饰函数;改变函数作用域,只能在当前文件中被调用。

                               3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值