C语言编程实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程实例相关的知识,希望对你有一定的参考价值。

#include"stdio.h"

void part (unsigned long num)


union data



unsigned int part[2];

unsigned long w;

n,*p;

p=&n;

n.w=num;

printf(" long int =%1x\n",num);

printf("low-part num=%x,high-part=%x\n",p->part[0],p->part[1]);



main()



unsigned long int x;

x=0x12345678;

part(x);


程序的运行结果为:

long int =12345678

low-part num=12345678,high-part num=cccccccc
long int =12345678为什么是这个结果

low-part num=12345678,high-part num=cccccccc又是怎么一回是

首先main中对x进行赋值,是12345678这个无符号长整形数,然后传到part()函数中,结构体那部分不用考虑,其它地方也没有对num进行更改,不会对内容有影响,所以输出结果为12345678;
然后p=&n把n的地址赋给指针p,n.w=num把12345678赋给w,此时结构体n的地址其实就是12345678所在的地址,p指向n,同时结构体*p中的数组part的初始地址也在p上,也就是说p指向的数组part于n.w的首地址是相同的;
看你的输出结果,你的C中int和long应该都是32位吧,所以输出part[0]就是输出part地址上的前32位,即num,part[1]上都是空的,什么也没有,所以就是8个C;
PS:我想这个程序的意义是把long型整数进行拆分,分别输出高低位两部分,但是你的C中的int和long都是32位,所以没成功吧
呵呵,也不知道说的对不,C很久没用了
参考技术A 没看懂。。

[转]C语言构建动态数组完整实例

[转]C语言构建动态数组完整实例

原文地址:http://www.jb51.net/article/52153.htm

 

本文以一个完整的实例代码简述了C语言构建动态数组的方法,供大家参考,完整实例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <malloc.h>
int main(void) {
    int len;
    int * arr;
    printf("请输入数组长度:");
    scanf("%d", &len);
    arr = (int *)malloc(sizeof(int)*len);
    printf("请输入数组的值:");
    for ( int i = 0; i < len; i ++) {
        scanf("%d", &arr[i]);
    }
    for (int j = 0; j < len; j ++) {
        printf("%d:%d ", j , arr[j]);
    }
    free(arr);
    return 0;
}

运行结果如下:

1
2
3
4
5
E:\clearning\cpointer>gcc dynamicarray.c -o dm --std=c99
E:\clearning\cpointer>dm
请输入数组长度:5
请输入数组的值:1 2 3 4 5
0:1 1:2 2:3 3:4 4:5

以上是关于C语言编程实例的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程实例

200多个C语言经典编程实例

C语言编程实例

[转]C语言构建动态数组完整实例

高级C语言目录

C语言Socket网络编程实例