## 指针分类型&指针与数组
指针练习程序
#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]
注意; 指针偏移的位置不要超出数组(超出的结果就是看到乱码)
运行结果