【C】指针的基本知识点

一、定义

(1) int *p=&number;

(2)int *p;   p=&number;
    p:代表首地址
   *p:代表首地址的值

二、赋值

  int *p,*p1;
   p=p1;
(1)指针可以和普通变量一样正常赋值,但是要相同类型才可
(2)指针变量指向数组首地址,可以像数组一样通过[]来访问数组每个元素
    strPtr=message;
    for(i=0;i<strlen(message);i++)
    {
        printf("%c",strPtr[i]);
    }

三、函数

char* test(char *str)        //*str与str[]等价
{
    int i;
    //char array[10]={0};局部变量
    char *array=(char *)malloc(sizeof(char)*20);
    memset(array,0,20);//初始化,内存清空函数
    for(i=0;i<strlen(str);i++)
    {
        printf("%c",str[i]);
    }
    printf("\n");
    strcpy(array,str);
    printf("array=%s\n",array);
    return array;
}

注意:

(1)可以把指针作为函数返回值,但是绝对不能把函数里面的局部变量的地址返回给外面
(2)返回后局部数组变量都会被销毁
(3)如果一定要返回地址,要自己开辟内存空间,使用malloc函数,默认返回是viod*
(4)调用这个函数记得初始化里面的数据,而且使用完记得销毁free,否则会地址泄露  free(p_str);

四、结构体数组

将结构体指针最为返回值,与上述函数相同,记得释放空间

typedef struct 
{
    int age;
    char name[20];
}PACK_T;


PACK_T* structTest(PACK_T *pack_t)
{
    PACK_T *temp=(PACK_T *)malloc(sizeof(PACK_T));
    memset(temp,0,sizeof(PACK_T));
    pack_t->age=28;
    strcpy(pack_t->name,"chen");
    memcpy(temp,pack_t,sizeof(PACK_T));//内存块的复制
    /*temp->age=29;
    strcpy(temp->name,"fhjd");*/
    return temp;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值