C语言指针用法的总结

指针要素概念总结:

1.指针声明: int *p; p=&a或者int *p=&a;概念:只有在带有指针类型的定义语句中,*p是指针声明的意思,其他正常语句中,*p均代表解引用。

2.指针的类型,将声明时指针名字与名字前面的*去掉,剩下的即为指针类型

以下为一些指针的用法总结,如有不对,请大佬纠正。

void (*p)(void);//p是一个无参数的函数的指针变量 
*p a(void);//a是一个无参数,返回值为*p的指针函数
void(*)(void);//表示void(void)类型的函数的指针 
(void(*)(void))(x);//将地址x强转为void(void)类型的函数指针 
(*((void(*)(void))(x)));//函数指针解引用,就是函数,跳转运行这个函数指针所指向的函数 
typedef void (*p)(int b,int c);//定义了一个名为 p的函数指针类型,指向void(int b,int c)型函数 
typedef void(int b,int c)  *p;//与上条语句描述等价 
void callback(int b,int c);//定义一个callback服务函数,参数为int b,int c
void installcallback(p d);//回调函数
void installcallback(callback); //使用回调服务函数作为形参 
typedef struct
{    
}A;
A *p;//定义一个结构体指针p
p->,(*p).//指针访问结构体A里的成员
int *p[]={&a,&b,&c}// p是一个指针数组,数组成员为指针
int a[];   int *p= a;//p是一个指向数组a的指针 
void X(*p);//当数组指针p作为函数形参时,使用函数X时形参填*p对应的数组首地址,即数组名 
void X(**p);//当指针数组*p作为函数形参时,使用函数X时形参是数组*p的首地址解引用之后再解引用 
*p++;//等同于*p+1,先执行*p,然后p++,如果此语句赋值给一个变量则等于指针p对应地址的下一个地址上的数据 
(*p)++;//先执行 (),再执行*p,再执行++,取指针p对应地址上的数据,然后+1并输出 
(int *)(x);//假设x为一处地址,则此处为将此地址强制转为换int型的指针(指针即为地址,地址即为指针,指针变量存放的就是一串地址,故而可以将一串地址强制转换为指针,这样即可操作内存 。退一步讲,在申明的时候int*p =地址就注定了一串地址x完全可以在申明的时候强制转换为指针
//指针变量也占用内存,32位系统指针变量占用4字节内存,64位系统指针变量占用8字节内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中的指针是一个非常重要的概念,它是许多高级特性的基础,如动态内存分配和复杂数据结构。指针是一个变量,它存储了一个内存地址,这个地址指向另一个变量的存储位置。 下面是一些常见的指针用法: 1. 声明指针变量:指针变量的声明需要使用星号(*),例如: ``` int *ptr; char *str; ``` 2. 取地址运算符(&):取地址运算符可以返回一个变量的地址,如: ``` int num = 10; int *ptr = # ``` 这里ptr指向了变量num的地址。 3. 解引用运算符(*):解引用运算符可以返回一个指针所指向的变量的值,如: ``` int num = 10; int *ptr = # printf("%d\n", *ptr); // 输出10 ``` 4. 指针的算术运算:指针可以进行加减运算,如: ``` int arr[3] = {1, 2, 3}; int *ptr = &arr[0]; ptr++; // 指向arr[1] ptr--; // 指向arr[0] ``` 注意,指针运算的单位是指针类型所占用的字节数。 5. 指针和数组:数组名本身就是一个指针,它指向数组的第一个元素。可以通过指针来访问数组中的元素,如: ``` int arr[3] = {1, 2, 3}; int *ptr = &arr[0]; printf("%d\n", *(ptr+1)); // 输出2 ``` 6. 指针和函数:指针可以作为函数的参数和返回值,如: ``` void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int num1 = 10, num2 = 20; swap(&num1, &num2); printf("%d %d\n", num1, num2); // 输出20 10 return 0; } ``` 这里swap函数接收两个指针参数,通过解引用运算符来交换它们所指向的变量的值。 以上是一些常见的指针用法,掌握好指针的使用可以让你更加灵活地处理数据和内存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值