区分指针数组,字符指针和字符数组。

三种形式灵活运行。

char* str[] 是一个指针数组,每个元素都是一个指向字符的指针。它可以用来存储字符串数组,每个字符串由一个字符指针指向。

char* str[] = {"Hello", "World", "Example"}; 

在上面的例子中,str 是一个包含三个元素的指针数组,每个元素是一个指向字符的指针,指向相应的字符串。

另一方面,字符指针是指向字符的指针。例如:

char* ptr = "Hello"; 

在这个例子中,ptr 是一个指向字符的指针,指向字符串 "Hello" 的第一个字符。

字符数组是一个用于存储字符序列的数组。例如:

char arr[] = {'H', 'e', 'l', 'l', 'o', '\0'};

指针数组char* str[]里存的就是字符指针。

简单例题’‘提取指针数组每个字符指针的首字母‘’中:

void fun(char* str[],int n,char *result){
    for(int i=0;i<n;i++){
        char* d=str[i];
        result[i]=d[0];
    }
    return result;
}

char* d=str[i],可以把指针数组中对应字符指针的值赋给d,通过d访问字符串。

12月2号下午新增:

a[i] = malloc(length+1);

a[i] = (char*)malloc((length + 1) * sizeof(char));

两种形式。

以及动态分配内存时(char*)等强制转换的必要与否。

在C语言中,(char*) 是一种类型转换,将返回的指针转换为 char* 类型。在标准C中,这种显式的类型转换并不是必需的,因为malloc的返回类型是void*,可以隐式地转换为任何其他类型的指针。

所以,从技术上讲,对于 malloc 的返回值,你可以不使用 (char*)

a[i] = malloc((max_length + 1) * sizeof(char));

这是因为在C语言中,void* 可以隐式地转换为任何其他类型的指针。然而,有些编译器开启了严格的类型检查,可能会发出警告,因此为了避免警告,你可以选择使用 (char*) 显式地指定类型转换。

总的来说,在绝大多数情况下,不使用 (char*) 也是合法的,但如果你想编写更加健壮、严格的代码,可以包含 (char*)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值