1. 程式人生 > >結構體變數和結構體指標變數作為函式引數傳遞的問題

結構體變數和結構體指標變數作為函式引數傳遞的問題

/*
2015年8月28日13:20:28
通過函式完成對結構體變數的輸入和輸出
*/




# include <stdio.h>
# include <string.h>


struct Student
{
int age;
char sex;
char name[100];
}; //分號不能省


void InputStudent(struct Student *);
void OutputStudent(struct Student ss);
int main(void)
{
struct Student st;  //15行


InputStudent(&st); //對結構體變數輸入  必須傳送st的地址
//printf("%d %c %s\n", st.age, st.sex, st.name);
OutputStudent(st); //對結構體變數輸出  可以傳送st的地址也可以直接傳送st的內容


return 0;
}


void OutputStudent(struct Student ss)
{
printf("%d %c %s\n", ss.age, ss.sex, ss.name);
}


void InputStudent(struct Student * pstu) //pstu只佔4個位元組
{
(*pstu).age = 10;
strcpy(pstu->name, "張三");
pstu->sex = 'F';
}


/*
//本函式無法修改主函式15行st的值 所以本函式是錯誤的
void InputStudent(struct Student stu)
{
stu.age = 10;
strcpy(stu.name, "張三");  //不能寫成 stu.name = "張三";
stu.sex = 'F';
}
*/

相關推薦

結構變數結構指標變數作為函式引數傳遞的問題

/*2015年8月28日13:20:28通過函式完成對結構體變數的輸入和輸出*/# include <stdio.h># include <string.h>struct Student{int age;char sex;char name[100];

結構指標作為函式引數傳遞卻無法傳值的有關問題

今天做C++作業遇到一個問題,需要寫一個函式(在連結串列中新增新的節點)將結構體指標作為形參,結果發現傳遞之後無法改變結構體的值,連結串列的長度還是沒變。通過查詢資料,發現把形參改為對結構體指標的應用即可解決問題。 原始碼: struct Tnode { strin

C語言指標作為函式引數傳遞學習(一)

1. 一維指標做函式引數 傳入的指標為NULL 比如下面的例子,很多人都會理解錯: #include <stdio.h> void test(char *string) { string = "hello world"; } int main() { cha

c++之指標作為函式引數傳遞的問題

轉自:http://blog.csdn.net/fjb2080/article/details/5623427   原創文章,轉載請註明出處,謝謝! 作者:清林,部落格名:飛空靜渡   部落格地址:http://blog.csdn.net/fjb2080 &n

指標作為函式引數傳遞 (轉載)

這幾天在學習C過程中,在使用指標作為函式引數傳遞的時候出現了問題,根本不知道從何得解:原始碼如下:    createNode(BinNode *tree,char *p)    {        tree = (BinNode *) malloc(sizeof(BinNo

指標作為函式引數傳遞的問題

今天程式設計時遇到了一個問題,就是想寫一個函式,讓這個函式通過引數返回記憶體某一個緩衝區的首地址。在網上找了找,發現以下這段程式碼比較有代表性, 於是複製過來作為一個總結說明。 下面這段程式碼是正確的,這段程式碼通過函式申請一片記憶體區,並將申請到的記憶體首地址返回給呼叫函

C語言 一個例子說明結構變數結構陣列結構指標

輸入三個學生的個人資訊 包含學號 姓名和三門學科的成績 輸出平均成績最高的學生的學號 姓名 各科成績以及平均成績 程式碼如下(譚浩強c程式設計的例子) #include<stdio.h> struct Student {int num;

細節決定成敗(用結構變數結構指標變數指標函式引數

//有n個結構體變數, //內含學生學號, //姓名和3門 //課程成績 //要求輸出平均成績最高 //的學生的資訊 //包括學號,姓名, //3門課程成績和平均成績 #include <stdio.h> #define n 3 struct student{

C語言經典例題--結構指標變數作為函式引數傳遞

#include <stdio.h> #include <string.h> struct student { int age; char sex; char name[30]; }; void inputstudent(struct stu

結構成員結構指標初始化

#include<stdio.h>#include <stdlib.h>#include <string>struct student{   char *name;   int score;   struct student* next;

結構變數作為函式引數

推薦使用引用的方式。因為傳遞的是變數的地址,因而效率較高,並且可讀性也高 #include <iostream> #include <string> using names

結構作為函式引數(值傳遞,引用傳遞指標傳遞

一、值傳遞 #include <iostream> #include <string> using namespace std; struct Student {     int id;     string name;     float sco

C++ 字串 14-- 18.40.結構函式 結構作為函式引數結構指標作為函式返回值

#include <iostream> #include <string> using namespace std; /*--------------------------------- 18.40.結構體與函式 結構體作為函式引數、結構體指標作為

結構陣列作為函式引數

把結構體陣列名作為函式的一個引數,然後在這個函式的函式裡面繼續作為引數,把一個值賦給這個結構體陣列的一個變數,我再賦值的地方是有值的,在函式裡面也是有值的,但是出了這個函式回到主函式時,這個結構體陣列的變數的值就為空了。為什麼呢?因為我在使用這個函式是這樣的, iRetur

c語言結構成員作為函式引數

使用者可以自定義結構體,是C語言的可以更方便的解決各種型別的問題。我們知道結構體變數可以作為函式引數,那結構體內部的成員變數可以作為函式引數麼? #include<stdio.h> #include<string.h> struct Worker{

C語言中指標變數作為函式引數一般變數作為函式引數的區別

函式的引數不僅可以是整型、浮點型、字元型等資料,還可以是指標型別。它的作用是將一個變數的地址傳送到另一個函式中。 指標變數作為函式引數和一般變數作為函式引數是有區別的,對於這種區別初學者一般都很迷惑。下面我將就一個簡單的例子來說明一下它們的區別。看透以後也許也就不那麼疑惑了。

c++中結構作為函式引數的使用

結構體雖然和陣列一樣,都可以儲存多個數據項,但是在涉及到函式時,結構變數的行為更接近於一個基本的單值變數,也就是說,與陣列不同,結構將其資料組合成單個實體或資料物件,該實體被視為一個整體。函式中引數為

C++基礎知識複習--結構類陣列作為函式引數

//結構體陣列,類陣列,普通陣列,作為函式引數 #include<iostream> #include<string> using namespace std; class C

菜鳥學習-C語言函式引數傳遞詳解-結構與陣列

C語言中結構體作為函式引數,有兩種方式:傳值和傳址。 1.傳值時結構體引數會被拷貝一份,在函式體內修改結構體引數成員的值實際上是修改呼叫引數的一個臨時拷貝的成員的值,這不會影響到呼叫引數。在這種情況下,涉及到結構體引數的拷貝,程式空間及時間效率都會受到影

結構定義與作為函式引數結構

可以參考《C和指標》P206 一、在結構體內部如下定義是違法的: struct s {     int a;     struct s b; } 因為內部包含自己的成員永遠不會終止,類似遞迴。 但是如下定義是合法的: struct s {     int a;     st