char *,char str[n], char **, char *argv[], char (*argv)区别。

Posted sunpengxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char *,char str[n], char **, char *argv[], char (*argv)区别。相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <string.h>

int main()
{
/*------------------------------------------------*/
#if 0
    char *str = "abcd";  
        //在栈内存中定义一个char *型的变量,内容为字符串“abcd”的首地址,
        //但是字符串“abcd”的内容存在于常量区,内容不可变,
        //在编译的时候就已经确定内容。运行速度慢。

    *str = c;        //错误,常量区内容不可变。
    printf("%s
", str);
    char st[20] = "abcd";
        //在栈中定义一个char型数组,大小为20个char字节,
        //abcd存在于这个数组中,可以通过指针去改变其中的内容。
        //在运行的时候确定的内容。运行速度快。
    *(st+1) = c;
    printf("%s
", st);
#endif
/*-------------------------------------------------*/
#if 0
    char *str = "abcd";
    char **argv = &str;
    printf("%p %s %c
", argv, *argv, **argv);
#endif
#if 1
    
    char *argv[3] = {"abcd","efgh","hig"};
    printf("%p  %p  %p
",&argv[0], &argv[1], &argv[2]);

    int  arg[3][2] = {1,2,3,4,5,6};
    int (*arc)[2] = arg;
#endif

    return 0;
}          

 

以上是关于char *,char str[n], char **, char *argv[], char (*argv)区别。的主要内容,如果未能解决你的问题,请参考以下文章

string,const char*, char*转换之后还是指向同一片内存地址么?

char*怎么转换string

C语言实现整数转换为字符串的函数,函数原型为void myitoa(int num,char *str)

为啥“char*”可以指向“const char*”?

利用char, str2mat, strvcat创建多行字符串数组

编写函数int count_number_string(char str[])和函数int maxnum_string(char str[])