C指针与结构体

通常情况下,机器的1个字节可以存放一个char类型的数据,2个相邻的字节存储单元可以存储一个short类型的数据,而4个相邻的字节存储单元可存储一个long类型的数据。指针是能够存放一个地址的一组存储单元(通常是两个或4个字节)。

指针和取值

1.指针是一个存储计算机内存地址的变量;

2.从指针指向的内存读取数据称为指针的取值;

3.指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。 ,

关于操作符*

1.根据出现位置的不同,操作符*既可以用来声明一个指针变量,也可以用作指针的取值。

2.当用在声明一个变量时,*表示这里声明了一个指针。其他情况用到*表示指针的取值。

 

#include<stdio.h>
int main() {
    int x = 1;
    int * ptr;
    ptr = &x;
    * ptr = 2;
    printf("%d\n", x); // 2
}
#include <stdio.h>

/*
指针只能指向特定类型的对象,也就是说,每个指针都必须指向某种特定的数据类型。
*/
void main()
{
    int x = 1, y = 2, z[10];
    int *p;
    p = &x;

    *p = 2;
    printf("%d\n", x);
    
    *p = *p + 2;
    printf("%d\n", x);

    int *q = p;
    printf("%d\n", *q);
}


关于操作符&

&是地址操作符。用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。

 

结构体

#include <stdio.h>
/*
关键字struct引入结构声明,关键字struct后面的名字是可选的,称为结构标记。
struct声明定义了一种数据类型。在标志结构成员表结束的右花括号之后可以跟一个变量表,
这与其他基本类型的变量声明是相同的。
*/
struct point {
    int x;
    int y;
};

struct user {
    int age;
} user1, user2;

void main()
{
    struct user user1;
    user1.age = 20;
    printf("%d\n", user1.age);
}
#include <stdio.h>

/*点*/
struct point {
    int x;
    int y;
};

/*矩形*/
struct rect {
    struct point pt1;
    struct point pt2;
};

void main()
{
    struct point p1 = {10, 20};
    struct point *pp = &p1; // 指向结构体的指针

    printf("%d, %d\n", (*pp).x, (*pp).y);

    printf("%d, %d\n", pp->x, pp->y);
}

 

参考博客:http://blog.jobbole.com/25409/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值