1. 程式人生 > >void型別的指標指向結構體,如何用->引用結構體內部元素

void型別的指標指向結構體,如何用->引用結構體內部元素

C語言允許void(泛型指標)等於其他任何型別的指標,但是當:void*p = struct str *p1;(即令void型別的指標等於結構體型別的指標)用p->使用內部元素的時候,編譯器在編譯的時候會報錯

解決辦法:重新定義結構體指標變數進行強制型別轉換

舉例:

  1 #include<stdio.h>

  2 #include<stdlib.h>

  3

  4 typedef struct{

  5     int a;

  6     int b;

  7 } str;

  8

  9 int main (intargc, char *argv[])

 10 {

 11     void *p;

 12     str *st, *st1;

 13

 14     st   = (str *)malloc(sizeof(str));

 15     st->a = 23;

 16     st->b = 24;

 17     p    = st;

 18     st1  = (str *)p;

 19    printf("%d\n%d\n",st1->a,st1->b);

 20

 21     free(st);

 22     return 0;

 23 }

同樣在函式中使用void泛型指標的時候一樣要定義新的變數進行強制型別轉換

如有問題,歡迎指正,感謝

相關推薦

當函式使用結構指標變數作為引數時如果結構中嵌套了結構應該如何呼叫其中的元素

今天寫程式碼時突然遇到了這個問題,以前不曾探討過多層巢狀結構體指標變數的訪問,只知道結構體指標變數要訪問其元素時應該用 -> 來訪問,但對於結構體中巢狀有結構體的時候呢? 請看下面程式碼: #include “stdio.h” using namespac

void型別指標指向結構如何用->引用結構體內元素

C語言允許void(泛型指標)等於其他任何型別的指標,但是當:void*p = struct str *p1;(即令void型別的指標等於結構體型別的指標)用p->使用內部元素的時候,編譯器在編譯的時候會報錯解決辦法:重新定義結構體指標變數進行強制型別轉換舉例:  1

結構的方法[ 定義時間結構輸入某一時刻的時間輸出下一秒的時間]

#include<stdio.h> int main() { struct Time { int h; int m; int s; }t1,t2; scanf("%d:%d:%d",&t1.h,&

C++ 釋放指向類的void型別指標造成記憶體洩漏

先來看一段程式碼 #include <iostream> using namespace std; class A { public: A(){ cout << "A() ...." << endl; } ~A() {

聚合型別總結——結構列舉聯合體

相關知識點如圖所示: 結構體重點知識點總結 1、結構體的特殊宣告: struct //匿名結構體 { int a; int b; float c; }x; struct { int a; int b; f

結構共用枚舉所占內存大小

http 結構體 int img main printf har alt mon 結構體要註意位補齊(有4位補齊和8位補齊,默認8位) 1 #include<stdio.h> 2 #pragma pack(push) 3 #pragma pack(4)

學生消費記錄管理系統(C語言 結構 連結串列)

自己在寒假練手的小專案  本系統要實現的功能: 1.     消費記錄存在檔案fee.txt中, 每一條記錄包括一個消費的交易日期、入賬日期、交易額、交易後餘額 2.     (1)使用者能夠查詢自己

C++ 定義學生資訊結構按照學號順序排序

定義學生資訊結構體,錄入學生資訊,根據學生的學號順序進行排序。 struct student 定義學生資訊,學生資訊中Score sc 為一個結構體型別的變數,存放學生的成績資訊; input(),disp()函式輸入輸出學生資訊;sort()通過學號的大小進行排序;程式中運用了選擇法排序;

PAT甲級1012 (結構排序)

題目 To evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C – C Program

1.結構體型別建立 2.結構初始化 3.結構記憶體對齊 4.位段位段計算機大小。 5.列舉 6.聯合

結構體型別的建立 1.結構體的宣告 結構是一些值的集合,這些值稱為成員變數。每個結構體的成員可以是不同型別的變數。 struct Student { char name[20];//名字 short age;//年齡 char sex[5

ABAP結構內表動態建立

*&---------------------------------------------------------------------* *& Report ZDYNAMIC_

【C語言】結構列舉聯合

一.結構體型別建立 結構體是一些值的集合,這些值稱為成員變數。結構體的每一個成員可以是不同型別的變數。 1.結構體的宣告 struct tag {   member-list; }variable-list; 舉例: 描述一個學生 struct Stu { &

C語言結構初始化和結構指標

結構體初始化 #include <stdio.h> //結構體的宣告和定義方法 //1.宣告和定義分離 struct weapon{ char name[20]; in

C語言難點解析之void *型別指標轉換成二級指標的操作

在群裡看到小夥伴貼了一段程式碼如下:P為void *型別的指標,並且使用calloc分配好了記憶體,第二個紅框內的內容該怎麼理解呢?我的理解是,這裡先將p強轉成型別為Base的二級指標,然後“*”表示解這個二級指標(取P的值),由於p是個二級指標,(const Base **

第22節 C語言結構結構巢狀、結構指標結構陣列的程式碼實現

結構體 #include <stdio.h> //第一步 struct Student { //學號 int no; //姓名 char name[20]; //性別 char

gendisk,request與bio結構以及塊裝置驅動註冊與登出以及載入與解除安裝

struct bio *bio; bio是這個請求中包含的bio結構體的連結串列,驅動中不宜直接存取這個成員,而應該使用後文將介紹的rq_for_each_bio()。 char *buffer; 指向緩衝區的指標,資料應當被傳送到或者來自這個緩衝區,這個指標是一個核心虛擬地址,可被驅動直接引用。 uns

結構初始化及結構指標.結構陣列.結構函式的呼叫賦值等

#include "stdio.h" #include "stdlib.h" #include "string.h" int fun(void); /************************************* int ARRSCORE[3]={133,123

C++2-------結構輸入與輸出函式

一、C語言與c++中的不同之:輸入與輸出C++中既可以使用C語言中的輸入輸出函式也可以用Cin和Cout進行輸入與輸出,不需要格式控制。# include<iostream> using namespace std; int main() { printf("h

C語言結構的前向宣告以及結構巢狀const結構成員的問題

如果你在宣告一個結構體A時,要使用一個未宣告的結構體B時,該怎麼辦?如下: #include <stdio.h> typedef struct demo{     struct stu test;     const int test2;     int te

typedef,結構共用聯合體

typedef的用途: 封裝資料型別,方便移植 簡化函式指標的定義 結構體:不同類的型元素匯聚。 (1)、在宣告型別的同時定義變數: struct結構體名{ 成員列表 }變數名列