cc++ 学习笔记 指针、数组、函数

    技术2024-01-13  97

    c/c++学习小贴士

    数组、指针、函数总结源代码

    数组、指针、函数

    错误代码

    #include <stdio.h> void circle(char str[50]) { char str1[50]; for (int i = 0; i <= 3; i++) { str1[i] = str[i]; } for (int i = 0; i <= 3; i++) { str[i] = str1[3 - i]; } //return str[50]; } int main() { char str[50] = { 0 }; //gets_s(str); scanf("%s", str); circle(str[50]); //上述错误"char" 类型的实参与 "char *" 类型的形参不兼容 //错误 C2664 “void circle(char[])”: 无法将参数 1 从“char”转换为“char[]” //circle(str); }

    错误"char" 类型的实参与 “char *” 类型的形参不兼容 错误 C2664 “void circle(char[])”: 无法将参数 1 从“char”转换为“char[]” 函数中

    char str[50];

    这里str是一个指针,是一个地址 char* 而 str[50]是一个char类型的字符数组 假如写

    scanf("%d",str);//char*

    是不用加取地址的符号&的。

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int StringLength(char* str){ if (str == ‘\0’){ return 0; } return 1 + StringLength(str+1); } void ReverseString(char str){ int len = StringLength(str); //第一个字符与最后一个字符交换 //交换后,令最后一个字符为’/0’,递归调用,再将最后一个字符附上第一个字符 if (*str != 0){ char tmp; tmp = str[0]; str[0] = str[len - 1]; str[len - 1] = ‘\0’; ReverseString(str + 1); str[len - 1] = tmp; } } int main(){ char arr[1024] = { 0 }; printf(“请输入字符串:\n”); scanf("%s", &arr); ReverseString(arr); printf(“字符串中的字符反向排列为:\n%s\n”, arr); system(“pause”); return 0; } ———————————————— 版权声明:本文为博主「cerf-volant」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_42142477/article/details/83060487

    这里观察转载来的博主的函数,

    int StringLength(char* str)

    这里str显然是char *,也就是一个指针 转载来博主的主函数中的调用函数,

    ReverseString(arr);

    这里的arr 也是 char*类型的,也就是一个指针。

    总结

    函数调用时,形参和实参的类型应当保持一致。

    char str[50]; 类型名称charstr[50]char *str

    错误之处在于,

    circle(str[50]);

    中的实参是char类型。 而函数

    void circle(char str[50])

    是char *类型。 这是为什么呢? 调用的时候 只要 函数名 本质上 就是传这个数组首地址去

    源代码

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void circle(char *str) { char str1[50]; for (int i = 0; i <= 3; i++) { str1[i] = str[i]; } for (int i = 0; i <= 3; i++) { str[i] = str1[3 - i]; } } int main() { char str[50] = { 0 }; scanf("%s", str); circle(str); printf("%s\n", str); }
    Processed: 0.015, SQL: 9