#include "stdafx.h" #include <stdio.h> #include <string.h> #include <math.h> #include<stdlib.h> #include <dos.h> #include <conio.h> typedef struct __Base_Audio_Device { int samplerate; int bits; }Base_Audio_Device; typedef struct __Audio_Module { Base_Audio_Device base_audio_device; int Cards; }Audio_Module; static Audio_Module Speaker_Audio_Module = { { 48000,16 }, }; int main() { // 用法一:賦值 取值 Base_Audio_Device base_audio_device = Speaker_Audio_Module.base_audio_device; printf("base_audio_device samplerate is %d\n", base_audio_device.samplerate); printf("base_audio_device bits is %d\n", base_audio_device.bits); printf("base_audio_device is %p \n", &base_audio_device); printf("Speaker_Audio_Module.base_audio_device is %p\n", &(Speaker_Audio_Module.base_audio_device)); printf("-------------------------------------------------\n"); // 不好的地方 兩個變量是處於不同地址空間 即使空間內容一樣 但是沒有什么聯系。。。 // 一個文件里面 經常是有要一個本文件的全局變量 操作這個變量 // 解決:方法一:就是使用結構體指針 // 事實上還是兩個基本問題(1)值拷貝 (2)地址拷貝的問題 指向的是同一個地址空間 Base_Audio_Device* pbase_audio_device = &Speaker_Audio_Module.base_audio_device; printf("samprate is %d\n", pbase_audio_device->samplerate); printf("bits is %d\n", pbase_audio_device->bits); printf("-------------------------------------------------\n"); while (1); return 0; }
