1. 程式人生 > >C語言結構體初始化和結構體指標

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

結構體初始化

#include <stdio.h>
//結構體的宣告和定義方法
//1.宣告和定義分離
struct weapon{
    char name[20];
    int atk;
    int price;
}; //宣告
//定義
struct weapon weapon_1; 
//====================================
//
//2.同時進行宣告和定義,只適用於簡單的程式
struct weapon
{
    char name[20];
    int atk;
    int price;
}weapon_1;

結構體的訪問

#include <stdio.h>
//結構體的宣告 struct weapon{ char name[20]; int atk; int price; }; int main() { //結構體的初始化 struct weapon weapon_1 = {"weapon_name",100,200}; //結構體的訪問 //weapon_1.name printf("%s,%d\n",weapon_1.name,weapon_1.price); //結構體陣列,陣列元素是結構體 //定義一個結構體陣列 //struct weapon weapon_2[2]={"weapon_name1",50,100,"weapon_name2",100,200};
//printf("%s,%d\n",weapon_2[0].name,weapon_2[1].atk);//訪問結構體陣列索引0的name,索引1的atk //或 //建議使用這種方式,更直觀 struct weapon weapon_2[2]={{"weapon_name1",50,100},{"weapon_name2",100,200}}; printf("%s,%d\n",weapon_2[0].name,weapon_2[1].atk);//訪問結構體陣列索引0的name,索引1的atk return 0; }

結構體指標

#include <stdio.h>
//結構體的宣告 struct weapon{ char name[20]; int atk; int price; }; int main() { //結構體的初始化 struct weapon weapon_1 = {"weapon_name",100,200}; //結構體指標 struct weapon * w;// w是指向struct weapon 型別的指標 w = &weapon_1;// w 指向weapon_1 //1.(*w).name // 括號不能省,因為.的優先順序比()的優先順序高 //2.w->name // 結構體中C語言允許使用指向運算子-> printf("%s,%s\n",(*w).name,w->name);//兩種方式等價 struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};; struct weapon * p; p = weapon_2;//p存放weapon_2中第一個結構體的地址,p->name與weapon_2[0].name等價 printf("%s\n",p->name); p++;//p指向weapon_2第二個結構體,等價於weapon_2+1,weapon_2[1] printf("%s\n",p->name); return 0; }

相關推薦

C語言結構初始結構指標

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

C程式碼開發遇到的問題 變數初始結構指標移動

1. 變數初始化 函式內部的變數如果不初始化的話預設不是0而是一個隨機值。 下面的程式用來列印一個未初始化的無符號的整型值,執行幾遍,每次的結果都會不一樣 #include <stdio.h> void PrintUint() { /* 預設是隨機值,不一定是0 *

C語言使用巨集初始結構的問題

Linux核心原始碼中廣泛的使用巨集來進行結構體物件定義和初始化,但是進行物件初始化的時候需要注意巨集引數和結構體成員名衝突的問題,下面進行簡單測試說明,編寫一個程式建立一個結構體,然後使用巨集進行結構體初始化: 1 #include "stdio.h"

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

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

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

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

結構成員賦值-標記結構初始語法-結構成員前面加小數點

指定成員初始化 static struct file_opretions sep4020_key_fops = { .ower = THIS, .read = sep4020_

C語言的未初始的數組的值為什麽是隨機的

urn turn 隨機 說明 tin main ont 情況 同學 突然想起來前幾天同學問我為什麽沒有初始化的數組的值是隨機的,發現這個困惑自己也是存在的,所以自己總結的心得. 1. 首先,並不是所有未初始化的數組的值都是隨機的.對於沒有初始化的數組,分兩種情況:  

c語言裡面變數初始問題與Java區別

C語言中,定義區域性變數時如果未初始化,則值是隨機的,為什麼? 定義區域性變數,其實就是在棧中通過移動棧指標來給程式提供一個記憶體空間和這個區域性變數名繫結。因為這段記憶體空間在棧上,而棧記憶體是反覆使用的(髒的,上次用完沒清零的),所以說使用棧來實現的區域性變數定義時如果不顯式初始化,值

C語言陣列的初始

一維陣列 其一般形式為:  型別名    陣列名    [陣列長度]     =     {初值表} 注:雖然C語言規定,只有靜態儲存的陣列才能初始化,但一般的C編譯系統都允許對動態儲存的陣列賦初值 對靜態陣列初始化: static in

C++中的值初始預設初始

1、值初始化       顧名思義,就是用數值初始化變數。如果沒有給定一個初始值,就會根據變數或類物件的型別提供一個初始值。對於int型別其值初始化後的值為0。 2、預設初始化:如果定義變數時沒有指定初值,則變數被預設初始化。其初始值和變數的型別以及變數定義的位

C語言全域性未初始資料段分析

前言:         在分析C語言全域性未初始化變數時,發現在目標檔案中全域性未初始化變數並不是直接放在bss段中。         再後來發現在兩個.c檔案中定義同名的全域性變數,連結時居然沒有

C語言的陣列初始

    這是很基礎的東西,但基礎的重要性不言而喻,我敢肯定這個知識點我肯定曾經瞭解過,但現在,我不敢確定,由此可見紀錄的重要性,這世界沒有什麼捷徑,找對方向,然後不停重複.所以從今天開始,我會比較詳細的紀錄這些比較小的知識點,其實還是有不少有意思的地方的.     寫這篇文章

C語言中的初始問題

經常在C語言工程中,尤其是比較大的程式,執行過程中會出現由於記憶體或堆疊導致的各種問題,輸出錯誤或執行崩潰~~ 1.字串陣列的初始化 (1) char str[10]=""; (2) char str[10]={’\0’}; (3) char str[10]; str[0]=’\0’;

C語言全域性變數初始、資料型別長度

今天在工作中遇到兩個問題,記錄下來: 1. 定義了一個全域性變數,然後初始化,編譯的時候編譯不通過。如下: int a; a = 5; 編譯的時候一直報錯,且說下面的a沒有定義型別,預設類似是int。 後面才發現全域性變數不能再全域性初始化,要初始化則在定義的時候初始化,如

c++系列】vector初始遍歷

其中vector初始化有多種方法,本文用已知陣列對vector進行初始化。 #include <iostream> #include <vector> using nam

C語言結構數組內帶字符數組初始賦值

指定 char 字符數 全局 種類 def 變量 指針 變量定義 1.首先定義結構體數組: typedef struct BleAndTspRmtCmd{ char terminal[3]; char note[3]; char rmtCmd[10]; char cmdP

結構初始引用及指向結構變數的指標變數(C語言

一、首先我們來了解關於結構體以及結構體陣列的概念。 自定義結構體: struct weapon{ char name[20]; int atk; int price; }; 它是"weapon"型(類似於我們熟知的int型,String型等),裡

C語言--結構初始

一、結構體基本初始化方法 定義 struct Mystruct { int first; double second; char* third; float four; }; 1、方法一:定義時賦值 賦值時注意定義時各個成員的順序,不能錯位。

C語言結構初始的四種方法

定義 struct InitMember { int first; double second; char* third; float four; }; 方法一:定義時賦值 struct InitMember t

C++ 與 C 語言 結構初始

C++中的struct可以看作class,結構體也可以擁有建構函式,所以我們可以通過結構體的建構函式來初始化結構體物件。(在C++中,結構體與類在使用上已沒有本質上的區別了,所以