2012.7.10
来源:互联网 发布:淘宝无线端访客 编辑:程序博客网 时间:2024/05/16 11:50
数组名是指针常量,不能自加或者自减,但数组在进行之传递是函数名可以自加;
*pp取地址p的地址 pp=&p指针的指针的变量存储指针的地址
(*(*(a+i)+j)
假设
int a[][3]={1,2,3,4,5,6},b;
b=*(*(a+1)+1);
a是个二维数组,表示二维数组a的地址,a[0]、a[1]可看作是2个一维数组,分别是一维数组a[0]、a[1]的地址,a[0]的值为{1,2,3},a[1]的值为{4,5,6},也就是a[0][0]的值为1,a[1][0]的值为4,依此类推
a+1是个地址,是二维数组a的第二个元素的地址,也就是a[1]的地址
*(a+1)是个值,但也是个地址,其值就是二维数组a的第二个元素的值,也就是a[1]的值,a[1]是个地址,也就是一维数组a[1]的地址
因此a+1和*(a+1)其实都是a[1]的地址值,前者是二维数组的地址,后者是二维数组的值,也即一维数组的地址
*(a+1)+1也就是a[1]+1,即一维数组a[1]的第二个元素,即a[1][1]的地址
*(*(a+1)+1)就是a[1][1]的值,也就是5
a、a[0]、*a都是a[0]的地址,a+1、a[1]、*(a+1)都是a[1]的地址,可用以下语句验证
printf("%d,%d,%d",a,a[0],*a);
printf("%d,%d,%d",a+1,a[1],*(a+1));
char str[10]="hello";
char *ptr="hello" 只读数据段
ptr++; 正确
(*ptr)='L'; 错误
char str[10];
strcpy (str,"hello");
char *ptr="hello" 正确
char *ptr;
ptr="hello";正确
char *ptr;
strcpy(ptr,"hello");错误
int a=6;
double k=1.00000
int *ptr=&a;
char *ptr="hello world!\n";
double *kk=&k;
printf("int=%d\t char=%d\t double=%d\n",sizeof(p),sizeof(ptr),sizeof(kk));
输出是4 4 4
指针都是4个字节!指针常量存储位置,只读代码段
野指针详情见博客另外两篇
若p为指针,return p ;错误,返回不能呢个返回指针应用
- 2012.7.10
- 2012.7.2 13:10
- 2012.7.10计划
- 2012.7.10总结
- 2012.7.10总结
- 2012.7.10 食物中毒日记
- 2012.7.1
- 2012.7.2
- 2012.7.3
- 2012.7.4
- 2012.7.5
- 2012.7.7
- 2012.7.6
- 2012.7.9
- 2012.7.9
- 2012.7.11
- 2012.7.13
- 2012.7.14
- code_work_posOrder_1.2
- (转).net中导入excel文件显示进度条
- ADF Input File组件使用不正常
- C语言模仿幻灯片过渡效果之水平百叶窗
- HDU_1540 Tunnel Warfare 线段树
- 2012.7.10
- 遭遇SIGPIPE
- 装饰模式
- SOJ-3330(bfs)
- 票据动作表 相关含义
- android4.0 bug修改系列五
- viewDidLoad, viewWillDisappear, viewWillAppear等区别
- Q77
- jQuery1.7.1 API的基础教程整理和总结