您的位置:首页 > 编程语言 > C语言/C++

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

2014-07-22 16:33 405 查看

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

数组名是个常量

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

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

一维数组和指针之间的转换:
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每移动一个单
位就移动3个int

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

数组/指针代码示例:
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显示十行

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

r 运行

p 变量 打印指定的变量值

n 运行下一个

q 退出

s 分布执行

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

函数代码示例

#include <stdio.h>

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: