指针的指针和指针数组

#include "stdio.h"
#include "string.h"

char str[] = {"abc"};// char str[] = {'a','b','c'}
char str1[] = {"def"};
char str2[] = {"xyz"};


/*练习指针数组*/
void getStringContent(char *array[3])
{
  array[0] = &str;
  array[1] = &str1;
  array[2] = &str2;
}
/*指针数组:是一个数组 数组的每个值都是一个地址*/


/*练习指针的指针*/
unsigned char buf[] = {"tong"};
void getStringFromBuf(unsigned char **string)
{
  *string = &buf[0];
}
/* **string表示 指针string指向 *string的地址 *string 又指向了**string的地址 */

int main()
{
  /*普通操作*/
  int a = 1;
  int *p = NULL;
  p = &a;
  printf("%d \n", (*p));
  //调用普通的

  // 调用指针数组
  char *array[3];
  getStringContent(array);
  printf("test 1 %s \n", array[0]);// %s这个占位符需要地址值
  printf("test 2 %p \n", array[0]); // str的地址
  printf("str的地址 %p \n", str);  // str的地址
  /*打印str的内容*/
  /*指针指向的是str数组的首地址*/
  for(int i = 0; i < sizeof(str); i++)
  {
    printf("%c ", *(array[0] + i) );
  }

  /*指针的指针*/
  //调用

  unsigned char *st = NULL;
  getStringFromBuf(&st);
  printf("\n %s", st);







}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值