不要忽视结构中的数组

#include<stdio.h>
#define NULL 0
struct Node{
char
po[10];
struct Node *next;
};
int main(void)
{
struct
Node a,*head,*p;
a.po[10]="abc";
struct Node b={"abc"};

head=&a;
a.next=&b;
b.next=NULL;
p=head;

printf("address %p %p",&a,&b);
printf("%s",a.po);

do{printf("%s\n",p->po);
p=p->next;
}

while(p!=NULL);
return 0;
}

这里a.po[10]没有得到赋值

因为数组必须在声明时赋值,a 是数组名,表示数组的首地址,是个常量,不能赋值,所以“a = {1, 3, 2};”是错误的。

而a.po[10]指的是po中第十个元素

所以a.po[10]="abc"; 并没有赋值成功而是乱码

时间: 2024-10-29 03:34:17

不要忽视结构中的数组的相关文章

数据结构中的数组

我们要学习的第一个数据结构就是数组,数组中很多值得挖掘. 数组基础 把数据码成一排进行存放 数组中索引从0开始,Java语法中要求数组存放同一类型的元素,可以通过中括号下标的方式取到元素. 这样可以看到Main中有的方法. package cn.mtianyan; public class Main { public static void main(String[] args) { // 必须传入长度 int[] arr = new int[10]; for (int i = 0; i < a

操作系统实验指导书(完整版)

操作系统实验指导书 烟台大学计算机学院 操作系统课程组 2008-9-20 第一部分  操作系统上机指导   Linux操作系统环境: RedHat Enterprise Linux ES release 3 (Taroon Update 1) (2.4.21-9.EL) Red Flag Linux release 4.0 (HOT) (2.4)   登录到系统 常用命令练习: 用root账号(超级用户)注册,口令为computer(注意大小写).注册成功出现#号(超级用户系统提示符,普通用户

hash与map的区别联系应用(转)

一,hashtable原理: 哈希表又名散列表,其主要目的是用于解决数据的快速定位问题.考虑如下一个场景. 一列键值对数据,存储在一个table中,如何通过数据的关键字快速查找相应值呢?不要告诉我一个个拿出来比较key啊,呵呵. 大家都知道,在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找.而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的. 具体如何做呢?大家是否有注意到前面说的话:“数组可以通过下标直接定位到相应的空间”

散列之HashTable学习

1,什么是散列? 举个例子,在日常生活中,你将日常用品都放在固定的位置,当你下次需要该东西时,直接去该地方取它.这个过程就相当于散列查找. 若将它们随意杂乱无章地存放,当需要某件东西时,只能一个地方一个地方地逐一查找,这就相当于顺序查找. 在数据结构中,数组就相当于一张散列表,因为可以根据数组下标索引直接取得该位置上的元素. 2,什么情况下用到散列? 由于散列查找相对于其它查找而言,理论上只需要O(1)时间就可以找到某元素,因此,当查找是主要的任务时,散列就是实现词典的一种很好的选择. 3,散列

EXT2 文件系统

对文件系统而言,文件仅是一系列可读写的数据块.文件系统并不需要了解数据块应该放到物理介质上什么位置.这些都是设备驱动的任务.无论何时,只要文件系统需要从包含它的块设备中读取信息或数据,它就将请求底层的设备驱动读取一个基本块大小整数倍的数据块.EXT2文件系统将它所使用的逻辑分区划分成数据块组.每个数据块组都将那些对文件系统完整性最重要的信息复制出来,同时将实际文件盒目录看做信息与数据块. 罗即文件系统管理的是一个逻辑空间,这个逻辑空间就像一个大的数组,数组的每个元素就是文件系统操作的基本单位——

sizeof操作符各类笔试题型汇总

说明:以下例题结果均是在32位平台VC6.0环境得到的. 一.sizeof应用于基本数据类型 1.sizeof应用于指针 char *str = "0123456789"; char *str = (char *)malloc(100); void *str = (void *)malloc(100); 解析:sizeof(str) = 4.32位CPU指针占4个字节. 2.sizeof应用于数组 char ss1[] = "0123456789"; char ss

Java初学笔记

1.产生随机数(0~9)的方法如下:  int random  = (int)(Math.random()*10) 2.switch()注意break和if的嵌套应用后面小括号中的表达式的值必须是整型或字符型 3.while()小括号里的条件是判断真与假,do-while()小括号用boolean类型方便好理解 4.for的循环,嵌套循环 5.循环中的break跳出直接本次循环执行循环以后的语句,常用于switch中:continue跳出循环体中剩余的语句而执行下一次循环,常用于循环结构中 6.

【转】在64位机上跑32位程序注意事项

原文网址:http://blog.chinaunix.net/uid-20742320-id-4744472.html 今天在交叉编译一个应用程序时,发现porting到板子上比较麻烦(nfs还没有支持),想现在PC上调试. 于是在板子上编译好,运行,发现指定的网页打不开,以为是httpd的confi有些出入,检查了下,没有错误. 在一筹莫展之际,直接在pc上运行突然发现出现segmdefault. segmdefault又是如何出现的呢? 通过file命令查看目标文件是elf64 而reade

iOS开发之oc(十一)--内存管理MRC

掌握内容 >理解内存管理的原理 >掌握手动内存管理MRC >掌握内存管理在实际工程中的使用 (一) 1.理解部分 1.1内存管理 (传统内存管理demo) 1.1.1内存管理做了一件什么事? 内存管理就是确保开辟的堆空间得到正确的释放 如果堆空间没有释放,称为内存泄露 使用已释放的堆空间,称为提前释放 重复释放同一个空间,称为重复释放 1.1.2传统内存管理的困境 (1)当我们要释放一个堆,首先要确定使用这个堆的指针,都访问完毕,避免提前释放. (2)释放指针指向的堆空间,首先要确定那些