28-29-指针和数组
2017-10-17 19:53
267 查看
1、数组的本质
#include <stdio.h> int main() { int a[5] = {0}; int* p = NULL; printf("a = 0x%X\n", (unsigned int)(a)); printf("a + 1 = 0x%X\n", (unsigned int)(a + 1)); printf("p = 0x%X\n", (unsigned int)(p)); printf("p + 1 = 0x%X\n", (unsigned int)(p + 1)); return 0; } a = 0x4A6D54F0 a + 1 = 0x4A6D54F4 p = 0x0 p + 1 = 0x4
2、指针与整数运算
3、指针与指针运算
4、指针比较
#include <stdio.h> int main() { char s1[] = {'H', 'e', 'l', 'l', 'o'}; int i = 0; char s2[] = {'W', 'o', 'r', 'l', 'd'}; char* p0 = s1; char* p1 = &s1[3]; char* p2 = s2; int* p = &i; printf("%d\n", p0 - p1); //printf("%d\n", p0 + p2); //ERROR printf("%d\n", p0 - p2); // printf("%d\n", p0 - p); //ERROR //printf("%d\n", p0 * p2); //ERROR //printf("%d\n", p0 / p2); //ERROR return 0; } -3 -16
#include <stdio.h> #define DIM(a) (sizeof(a) / sizeof(*a)) int main() { char s[] = {'H', 'e', 'l', 'l', 'o'}; char* pBegin = s; char* pEnd = s + DIM(s); // Key point char* p = NULL; printf("pBegin = %p\n", pBegin); printf("pEnd = %p\n", pEnd); printf("Size: %d\n", pEnd - pBegin); for(p=pBegin; p<pEnd; p++) { printf("%c", *p); } printf("\n"); return 0; } pBegin = 0x7ffdde8ffa10 pEnd = 0x7ffdde8ffa15 Size: 5 Hello
5、小结
6、数组访问方式
7、下标访问与指针访问
8、a和&a的区别
#include <stdio.h> int main() { int a[5] = {1, 2, 3, 4, 5}; int* p1 = (int*)(&a + 1); int* p2 = (int*)((int)a + 1); int* p3 = (int*)(a + 1); printf("%d, %d, %d\n", p1[-1], p2[0], p3[1]); return 0; } // A. 数组下标不能是负数,程序无法运行
9、数组参数
#include <stdio.h> void func1(char a[5]) { printf("In func1: sizeof(a) = %d\n", sizeof(a)); *a = 'a'; a = NULL; } void func2(char b[]) { printf("In func2: sizeof(b) = %d\n", sizeof(b)); *b = 'b'; b = NULL; } int main() { char array[10] = {0}; func1(array); printf("array[0] = %c\n", array[0]); func2(array); printf("array[0] = %c\n", array[0]); return 0; } In func1: sizeof(a) = 8 array[0] = a In func2: sizeof(b) = 8 array[0] = b
10、小结
相关文章推荐
- C语言及程序设计提高例程-28 字符串、字符数组、字符指针
- 第7周 C语言及程序设计提高例程-28 字符串、字符数组、字符指针
- 29.指针数组和数组指针
- C语言提高-28讲: 字符串、字符数组、字符指针
- 29_指针和数组分析(下)
- <2012 10 29> 调C记录 <有关指针 数组 声明>
- 第四章 []运算符的本质 [置顶] 第四章 []运算符的本质 分类: 数组与指针的艺术 2009-11-23 10:59 8972人阅读 评论(28) 收藏 举报 bufferinteger编译器o
- 主题四 指针和数组(下)----28.函数与指针分析
- 使用指针访问一维数组
- 数组与指针
- c/c++数组名和指针区别深入探索
- C/C++数组名与指针区别
- 指针与数组【转摘】
- 指针与数组
- 【php数组函数序列】之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
- more effective c++ 第一章读书笔记: 指针,引用,c++类型转换,多态数组,默认构造函数
- PHP 数组函数 内部指针
- 关于指针数组、数组指针、及函数指针和指向函数指针数组的指针的一点理解
- 函数指针 函数指针数组 指针函数 数组指针 指针数组
- 用指针指向数组首元素,输出第奇数(1,3,5,7)个学生的数据。