011_C语言数组与指针间的转换及函数应用



数组的名字是数组的首地址

 

数组名是个常量

 

大端:数据的高字节存在内存的低地址上

 

小端:数据的低字节存放在内存低地址上

 

一维数组和指针之间的转换:

a[1]=*(a+1)取出数组中a[1]的内容

int *p; p=a; *p=a[0]      p指向数组的首地址 *p取的是首地址里面的内容

 

二维数组与指针之间的转换:

a[1][2]=*(*(a+1)+2) 取出数组中a[1][2]的内容

int *p; p=a; *p=a[0][0]   p指向数组的首地址 *p取的是首地址里面的内容

 

int (*arr)[3];  *arr为指针变量,除此之外,其他成分都是访问方式,arr每移动一个单 位就移动3int

 

一维数组对应一重指针,二维数组对应二重指针

 

数组/指针代码示例:

int main(void)

{

 

        int arr[3]={12,13,14};

        int a[2][3]={{1,2,3},{4,5,6}};

 

        int *p;

        p=a;

        printf("a[0][0]=%d\n",*p);

 

        int (*aar)[3];

        aar=a;

        printf("a[0][0]=%d\n",**aar);

        printf("a[1][0]=%d\n",*(*(aar+1)));

        printf("a[1][2]=%d\n",*(*(aar+1)+2));

 

        printf("a[2]=%d\n",*(arr+2));

        printf("a[1][2]=%d\n",*(*(a+1)+2));

        printf("a[0][1]=%d\n",*(*a+1));

        printf("a[0][0]=%d\n",*(*a));

 

        return 0;

}

 

 

函数:在定义函数时,应尽量函数功能单一化,模块化

软件分层思想:

 

gdb调试工具使用

gdb 文件名.out 

l显示十行 

函数名 设置断点表示程序执行到端点即停止运行

运行

变量   打印指定的变量值

运行下一个 

退出

分布执行

 

形参被实参初始化时,被传递的实参值不会改变,传递地址址时,仅仅是该地址里面的内容发生变化,而地址本身不会改变 

 

函数代码示例

 

 

 

 

 

 

 #include 

 

int main(void)

{

        int a=3,b=5;

        int c=6,d=9;

        swap(a,b);

        printf("a=%d,b=%d\n",a,b);

        swap1(&c,&d);

        printf("c=%d,d=%d\n",c,d);

        return 0;

}

swap(int x,int y)

{

        int tmp;

        tmp=x;

        x=y;

        y=tmp;

        printf("x=%d,y=%d\n",x,y);

        return;

}

swap1(int *i,int *j)

{

        int *p;

        p=*i;

        *i=*j;

        *j=p;

        printf("*i=%d,*j=%d\n",*i,*j);

        return;

}

                                                            

 

你可能感兴趣的:(LinuxStudy)