通过指针打印地址和内容
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int num = 100;
printf("%pn",&num);
int* pnum = #
printf("%pn",pnum);//此时pnum里面存放的就是num的地址
printf("%dn", *pnum);//指向的是num空间里的内容
return 0;
}
通过指针对常量进行访问,不同指针类型可以一次访问空间不同
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int num = 0x12345678;
char* p1 = #
short* p2 = #
int* p3 = #
long* p4 = #
//十六进制两个数字在内存中占一个字节---四位二进制代表一个数字
printf("0x%xn",num);
printf("0x%xn",*p1);//一次访问一个字节访问后两位-78
printf("0x%xn", *p2);//一次访问两个字节访问后四位-5678
printf("0x%xn", *p3);//一次访问四个字节访问8位-12345678
printf("0x%xn", *p4);//一次访问四个字节访问8位-12345678
return 0;
}
指针+1,物理地址加类型大小字节
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int num = 0x12345678;
char* p1 = #
short* p2 = #
pri服务器托管网ntf("0x%xn",*p1);//78
printf("0x%xn", *(p1+1));//56
printf("0x%xn", *p2);//5678
printf("0x%xn", *(p2+1));//1234
return 0;
}
指针与一维数组
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int num[5];
printf("num=%pn",num);
printf("&num[0]=%pn", &num[0]);
return 0;
}
数组中元素地址是连续的
#define _CRT_SECURE_NO_WARNINGS 1
#include
//eg:int num[5]={10,20,30,40,50};--通过指针打印
int main()
{
int num[5] = { 10,20,30,40,50 };
for (int i = 0; i
*p++ 和 ++p区别(单目操作符)–不可以num++
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
//*p++先地址+1,再寻址取内容
//++*p先寻址去内容,再内容+1
//eg:
int num[5] = { 10,20,30,40,50 };
int* pnum = num;
for (int i = 0; i
数组指针
//数组指针:数组类型的指针
//类型 *[数组长度]
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int num[5] = {10,20,30,40,50};
int(*pnum)[5] = NULL;//数组指针变量---pnum
//num 代表首地址---&num[0]--类型:int*---整型指针
//int (*pnum)[5]--pnum-服务器托管网----类型: int(*)[5]--整型数组指针
pnum = (int(*)[5])num;//因为类型不同所以需要把num类型强转为数组指针类型
printf("pnum=%pn",pnum);
printf("pnum+1=%pn", pnum+1);//+20
return 0;
}
二维数组类型表示
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int num[3][4] = { {1,2,3,4}, {4,5,6,7},{7,8,9,10} };
int(*pnum)[4] = NULL;//数组指针变量--pnum
int* pnum1 = NULL;
//pnum--指针变量--指针类型表示 int (*)[4];
//num--二维数组的数组名---首地址--该指针类型
//int (*)[4]
//&num[0]指针类型 int (*)[4] --此时是第零行数组-属于数组,所以类型为数组指针
pnum1 = &num[0][0];
//&num[0][0] 指针类型 int * --此时表示第零行第零列-属于元素,所以类型为int *
return 0;
}
二级指针–保存一级指针的地址
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int num = 10;
int* pnum = #
int** ppnum = &pnum;
printf("ppnum=%xn",ppnum);//代表ppnum空间,存的是pnum的地址
printf("*ppnum=%xn", *ppnum);//代表pnum空间,存的是num的地址
printf("**ppnum=%xn", **ppnum);//代表num空间,存的是10
printf("&pnum=%xn", &pnum);//代表pnum的地址
printf("pnum=%xn",pnum);//代表pnum空间,存的是num的地址
printf("*pnum=%xn", *pnum);//代表num空间,存的是10
printf("&num=%xn", &num);//代表num的地址
printf("num=%xn", num);//代表num空间,存的是10
return 0;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 七天.NET 8操作SQLite入门到实战 – 第二天 在 Windows 上配置 SQLite环境
前言 SQLite的一个重要的特性是零配置的、无需服务器,这意味着不需要复杂的安装或管理。它跟微软的Access差不多,只是一个.db格式的文件。但是与Access不同的是,它不需要安装任何软件,非常轻巧。 七天.NET 8操作SQLite入门到实战详细教程 …