c语言中指针,字符串的指针和指向字符串的指针变量的问题

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>
main()
{
    char  **p2;
    char *name[] =/*定义指针变量时的*号并没有指向的含义,
        只是让计算机知道name[]是个指针(地址),好为分配存储空间和接下来的操作做准备。
        你就当计算机可以直接理解c语言,你把中间层和底层都当成透明的,这样比较好理解记
        忆c的语法,不然你就始终会纠结,中间层和底层是怎么回事。*/
    { "Follow me" ,"BASIC",
  "Greatwall","FORTRAN",
     "Computer design" };
    p2 = name;
    printf("%s", *++p2);
    /*  c语言的指针问题的本质:1.已经定义好的变量,计算机是知道其地址的,直接运用变量名,
        计算机就会直接找到其地址中的内容。2.指针问题的本质就是间接,直接,还是多重间接
        寻址的问题,有*号,(如*p,p=&a)就代表得到的内容不是p中的内容,而是以p中的内容为
        地址,寻找到的存储单元中的内容,则*p则称为指向a的指针,p为指针变量。也可以这样理
        解,指针就是地址,指针变量里面存的也就是地址。
    */

    /*字符型数组的数组名是常量,不能改变。所以更不能直接给数组名赋初值,
    只能在定义的时候给其赋初值,如下。
    char    format[ ] = “ a = %d , b = %f \n ” ;
        printf (format, a, b);              正确!
        format = “c=%c, d=%u\n”;  错误!
        printf ( format , c , d ) ; */


    /*数组定义后, 在编译时分配内存单元,即有确定
     的值。对指针变量定义后,尽管系统给其分配了
     内存单元,但在没有明确指向前,其值不确定。
      char    str[ ] = “Hellow”;
    正确:     char    str[10] ;
               scanf ( “ %s ”,  str ) ;
    错误:     char     *a ;
               scanf ( “ %s ”,  a ) ;
    可改为:  char     *a  , str[10] ;
                a = str;
                scanf ( “ %s ”,  a )*/
    /*
        char    *string ;
        string = “I   Love   China” ; 
    将字符串的首地址赋给指针变量 string 。
    说明:
    尽管没有直接定义字符型数组,但实际上C语言对字符常量均按字符数组来处理。即在内存中开
    辟了一个字符数组用来存放字符串常量。*/
}


	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值