## 指针分类型&指针与数组 指针练习程序
#include <stdio.h> #include <stdlib.h> int main() { int *p;// 只能存放整数的地址 char *p2; // 存放字符数据的地址 int a = 10; char c = 'A'; p = &a;// p = &c 判断计算机的大小端 p2 = &c; printf("a = %d \n",*p); // 1.指针与整数 printf("c = %c \n",*p2);// 2.指针与字符 //指针++的问题 printf("a 的地址打印;%p\n",p); printf("a 的地址++打印;%p\n",++p);// 整数型指针++ 地址连续,一个整型变量占用四个字节 printf("c 的地址打印;%p\n",p2); // 字符型指针++ 地址连续,一个字符型变量占用一个字节 printf("c 的地址++打印;%p\n",++p2); int array[3] = {1,2,3}; // 数组,关心的是数组的首地址 两种表示方式;1.数组名 = 地址 2.第一个元素的地址 printf("第一个元素的地址%p \n",&array[0]); printf("第二个元素的地址%p \n",&array[1]); printf("第三个元素的地址%p \n",&array[2]); int i; for(i=0;i<3;i++){ printf("%d\n",array[i]); } int *parray; parray = &array[0]; // 指针访问数组 /* printf("第一个元素的地址%p \n",parray++); printf("第二个元素的地址%p \n",parray++); printf("第三个元素的地址%p \n",parray); */ for(i=0;i<3;i++){ printf("%d\n",*parray); parray++; } system("pause"); return 0; }1.指针分类型
int *p;// 只能存放整数的地址 char *p2; // 存放字符数据的地址 int a = 10; char c = 'A'; p = &a;// p = &c 判断计算机的大小端 p2 = &c; printf("a = %d \n",*p); // 1.指针与整数 printf("c = %c \n",*p2);// 2.指针与字符1.整型数据行指针 2.字符型数据指针
2.指针++问题
//指针++的问题 printf("a 的地址打印;%p\n",p); printf("a 的地址++打印;%p\n",++p);// 整数型指针++ 地址连续,一个整型变量占用四个字节 printf("c 的地址打印;%p\n",p2); // 字符型指针++ 地址连续,一个字符型变量占用一个字节 printf("c 的地址++打印;%p\n",++p2);指针++根据类型不同,偏移值也不同 整数型指针++ 地址连续,一个整型变量占用四个字节 字符型指针++ 地址连续,一个字符型变量占用一个字节
3.指针与数组
int array[3] = {1,2,3}; // 数组,关心的是数组的首地址 两种表示方式;1.数组名 = 地址 2.第一个元素的地址 printf("第一个元素的地址%p \n",&array[0]); printf("第二个元素的地址%p \n",&array[1]); printf("第三个元素的地址%p \n",&array[2]); int i; for(i=0;i<3;i++){ printf("%d\n",array[i]); } int *parray; parray = &array[0]; // 指针访问数组 /* printf("第一个元素的地址%p \n",parray++); printf("第二个元素的地址%p \n",parray++); printf("第三个元素的地址%p \n",parray); */ for(i=0;i<3;i++){ printf("%d\n",*parray); parray++; }指针跟数组; 1.如何让指针指向数组 2.数组关心首地址 3.(1.)数组名表示首地址 int array[3]; int *p; p = array; (2.)第一个元素的地址表示首地址 int array[3]; int *p; p = &array[0]
注意; 指针偏移的位置不要超出数组(超出的结果就是看到乱码)
运行结果