首页  

C语言指针运算和指针类型     所属分类 c 浏览量 823
类型 算术运算 单位长度
自增自减
自增自减++ --优先级高于解引用*

*q++	*(q++)
*q--	*(q--)

++*q	++(*q)
--*q	--(*q)

如果一个表达式里有多个运算符,先执行优先级高的运算符
如果优先级相同,那就看结合性,根据结合方向来做运算

指针的算术运算表示在一片连续空间上的移动
指针的比较运算也是用于一片连续空间的地址比较
常用于数组等连续内存

无论指向什么类型,所有指针的大小都是一样的
char* str;
short* ps;
int* pn;
long* pl;
long long* pll;
float* pf;
double* pd;
long double* pld;

指向不同类型的指针不能直接相互赋值(void* 除外),需要强制类型转换
指针类型转换没有改变指针的地址,也没有改变指针指向的值,只是改变了移动的单位长度

void* 指向未知类型的指针, 根据需要转换为所需数据类型



#include "stdio.h" int main(){ int num = 3; int arr[] = {0,1,2,3,4,5}; char *str = "hello"; int *pnum = # char *pstr = str; printf("%p %d\n",pnum,*pnum); int *parr = arr; void *p1 = str; void *p2 = pnum; int *pnum2 = (int*)p2; printf("%p %d \n",pnum2,*pnum2); printf("%p %p %p\n",str,pnum,arr); printf("%ld %ld %ld %ld \n",sizeof(str),sizeof(pnum),sizeof(pstr),sizeof(p1)); printf("%p %p\n",p1,p2); p1++; p2++; printf("%p %p\n",p1,p2); printf("%p %p\n",pstr,pnum); pstr++; pnum++; printf("%p %p\n",pstr,pnum); int*parr1 = &arr[1]; int*parr3 = &arr[3]; // 2 printf("%ld\n",(parr3 - parr1)); return 0; }

上一篇     下一篇
c 指针数组

二维数组函数入参用法

二维整型数组参数传递的三种方式

C语言指针和二维数组

各种指针的大小

C语言数据结构笔记