数组的赋值

////  main.c//  个人信息////  Created by 李礼光 on 16/4/23.//  Copyright © 2016年 liliguang. All rights reserved.//

#include

typedef struct people{

//创建个人信息

    //char name[100],address[100];

/**************************************/

// 注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的,所以不能在结构体外面直接赋值

    // char str[ ];

    // str="I am happy";

/**************************************/

//    解决方法,使用指针创建字符串

    char *name, *address; 

    int age,height;

    float weight;

}Person;

int main(int argc, const char * argv[]) {

//  创建一个人,自定义数据

    Person xiaoming;

    xiaoming.name = "小明";

    xiaoming.age = 18;

    xiaoming.height = 170;

    xiaoming.weight = 60.5;

    xiaoming.address = "广东省广州市";

    printf("个人信息\n");

    printf("name = %s\n",xiaoming.name);

    printf("age = %i岁\n",xiaoming.age);

    printf("height = %icm\n",xiaoming.height);

    printf("weight = %.1fkg\n",xiaoming.weight);

    printf("address = %s\n",xiaoming.address);

    return 0;

}


对使用字符指针变量和字符数组两种方法表示字符串的讨论

虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈。


4.1、字符数组由若干个元素组成,每个元素放一个字符;而字符指针变量中存放的是地址(字符串/字符数组的首地址),绝不是将字符串放到字符指针变量中(是字符串首地址)


4.2、赋值方式:

对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值,注意,是不可以!!

    char str[14];

    str="I love China";    (但在字符数组初始化时可以,即char str[14]="I love China";)

    而对字符指针变量,采用下面方法赋值:注意,是可以!!

    char* a;

    a="I love China";  或者是 char* a="I love China";


4.3、对字符指针变量赋初值(初始化):

    char* a="I love China";

    等价于:

    char* a;

    a="I love China";

    而对于字符数组的初始化

    char str[14]="I love China";

    不能等价于:

    char str[14];

    str="I love China"; (这种不是初始化,而是赋值,而对数组这样赋值是不对的)


4.4、如果定义了一个字符数组,那么它有确定的内存地址;而定义一个字符指针变量时,它并未指向某个确定的字符数据,并且可以多次赋值。

参考引用:http://www.jb51.net/article/37456.htm

你可能感兴趣的:(数组的赋值)