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

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

    return 0;
}          

猜你喜欢

转载自www.cnblogs.com/sunpengxx/p/9789151.html
今日推荐