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;
}
数组的名字是数组的首地址
数组名是个常量
大端:数据的高字节存在内存的低地址上
小端:数据的低字节存放在内存低地址上
一维数组和指针之间的转换:
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;
}
相关文章推荐
- C语言之指针、数组和函数(转)
- 水滴石穿C语言之指针、数组和函数
- C语言中多维数组的常见动态分配方式及其在函数参数传递时的应用
- 函数指针数组在ARM异常中断处理中的应用
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- C语言之指针、数组和函数
- c语言-数组/指针/函数(小结)
- C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧
- C语言之指针、数组和函数
- C语言之函数、指针、数组二重奏
- C语言之指针、数组和函数
- 数组作为函数参数 自动转换为同类型指针
- C语言之指针、数组和函数
- C语言 通过指针从函数返回一个数组
- C语言之指针、数组和函数
- C语言之指针、数组和函数
- C语言之指针、数组和函数
- 指针数组,数组指针,指针函数,函数指针的区别及类型间的转换
- 水滴石穿C语言之指针、数组和函数
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)