四川省建设勘察设计网站,seo运营培训,饮食网站首页页面,微商代理网点击蓝字关注我们简单回顾一下指针的概念内存会划分以字节为单位的空间#xff0c;每一个字节都有一个编号#xff08;地址/指针#xff09;指针变量可以存放这个地址/指针注#xff1a;我们日常所说的指针#xff0c;一般是指针变量下面让我们坐上指针进阶的直通车#…点击蓝字关注我们简单回顾一下指针的概念内存会划分以字节为单位的空间每一个字节都有一个编号地址/指针指针变量可以存放这个地址/指针注我们日常所说的指针一般是指针变量下面让我们坐上指针进阶的直通车来到第一站字符指针字符指针代码示例int main()
{char ch w;char* p ch;char* pa abcdef;return 0;
}字符变量ch里面存放了字符w字符指针p里面存放了ch的地址指针变量pa里面存放了abcdef字符串的地址我们并没有对这个字符串进行初始化。而是直接把它放进了指针变量pa里面。和前两行的字符w不同abcdef是存储在内存中的只读数据区无法修改即便通过指针也无法修改。为了避免理解出错我们一般会加上const修饰const char* pa abcdef;const放在*的左边表示const修饰的指针指向的内容表示指针指向的内容不能通过指针来改变但是指针变量本身是可以改变的const放在*的右边表示const修饰的是指针变量本身指针变量的内容不能被修改但是*pa指针指向的内容是可以通过指针来修改的代码示例int main()
{char arr1[] abcdef;char arr2[] abcdef;const char* str1 abcdef;const char* str2 abcdef;if (arr1 arr2)printf(arr1arr2\n);elseprintf(arr1!arr2\n);if (str1 str2)printf(str1str2\n);elseprintf(str1!str2\n);return 0;
}它的结果如下在例子1里面我们提到过str1和str2这种情况都指向一个常量字符串既然字符串abcdef无法被改变编译器也没有必要创建两个独立的内存空间来存放两个相同的字符串所以str1和str2的地址是完全一样的而arr1和arr2是完全不同的数组它们的首元素地址不一样打印的结果是不相等typedef关键字如何使用在MSDN中我们可以查找到typedef的定义简单地说typedef的作用就是把一个已有的类型名换一个新的名字typedef int* pint;这句代码的意思是将int*命名为pintpint在使用的时候和int*完全一致我们仍然可以使用int*在结构体里面我们可以用typedef来缩短原有结构体定义的语句如将struct Stu命名为Stutypedef和#define的区别我们同样可以使用#define语句进行这项操作#define PINT int*定义语句PINT为int*指针连续定义先来了解一下如何正确连续定义两个指针int*pa,*pb;//正确的连续定义int*papb;//错误
//pa是int*类型而pb是int类型因为这两个的情况非常容易搞混所以我们不建议连续定义指针typedef int* pint;
#define PINT int*int main()
{pint pa,pb;//可连续定义指针//pa--int*//pb--int*PINT pa,pb;//等同于int*papb//pa--int*//pb--int
} ·typedef会产生一个新的变量类型 ·#define只是在对应位置进行替换因为typedef产生了一个新的类型pint为int*但与int*也有不同int pa,pb;//pa,pb都是int类型
pint pa,pb;//pa,pb都是int*类型而我们直接用int*进行连续定义指针变量是错误的int*papb;//错误
//pa是int*类型而pb是int类型你学会了吗我反正是学废了。*声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。戳“阅读原文”我们一起进步