當前位置:首頁 » 編程語言 » c語言數據傳遞的基本要求
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數據傳遞的基本要求

發布時間: 2022-04-11 18:09:46

A. c語言不同類型數據傳遞的問題

浮點數使用ieee-754標准,單精度和雙精度浮點數長度和格式都不同,直接復制時需要考慮格式是否匹配的問題。而且你接收的字元還存在大、小端問題,需要根據實際情況來轉換。

B. 在C語言中,實參傳遞給形參的規則是什麼本質是什麼

C語言來說,實參傳遞形參的規則都是值傳遞,但是這個值得不同將會有不同的效果
比如傳遞平常用戶定義的類型或者基本類型,那麼形參的改變不會影響實參的變化
但若傳遞的是指針或者引用,那麼形參的改變會影響實參的變化

C. c語言 數據結構基本功能要求:

#include "stdio.h"

#define MAX 50

typedef struct LNode{
int data;
struct LNode *next;
}LNode;

void OutputDegree(int matrix[MAX][MAX], int n);
void Insert(LNode *head, int data);
void list(LNode *head);
void createAdjList(int matrix[MAX][MAX], int n, LNode *head[]);

void main()
{
int matrix1[MAX][MAX] = {{0,1,1},{1,0,1},{0,0,0}};
int matrix2[MAX][MAX] = {{0,1,0,1,0},{1,0,1,0,0},{0,1,0,1,1},{1,0,1,0,0},{0,0,1,0,0}};
int n; /* 頂點數 */
LNode *head[MAX];
int i;

n = 3;
printf("List degree of all vertex : \n");
OutputDegree(matrix1, n);

for(i=0; i<n; i++)
{
head[i] = (LNode *)malloc(sizeof(LNode));
head[i]->data = i+1;
}

createAdjList(matrix1, n, head);

printf("Adjancency List : \n");
for(i=0; i<n; i++)
{
printf("%d : ", head[i]->data);
list(head[i]);
printf("\n");
}

n = 5;
printf("List degree of all vertex : \n");
OutputDegree(matrix2, n);

for(i=0; i<n; i++)
{
head[i] = (LNode *)malloc(sizeof(LNode));
head[i]->data = i+1;
}

createAdjList(matrix2, n, head);

printf("Adjancency List : \n");
for(i=0; i<n; i++)
{
printf("%d : ", head[i]->data);
list(head[i]);
printf("\n");
}
}

/* 輸出頂點的度 */
void OutputDegree(int matrix[MAX][MAX], int n)
{
int InDegree[MAX]; /* 入度 */
int OutDegree[MAX]; /* 出度 */
int i, j;

for(i=0; i<n; i++)
{
InDegree[i] = OutDegree[i] = 0;
for(j=0; j<n; j++)
{
InDegree[i] += matrix[j][i];
OutDegree[i] += matrix[i][j];
}
}

for(i=0; i<n; i++)
{
printf("vertex %d : In - %d, Out - %d\n", i+1, InDegree[i], OutDegree[i]);
}
}

void Insert(LNode *head, int data)
{
LNode *pre = head->next;
LNode *temp;
temp = (LNode*)malloc(sizeof(LNode));
temp->data = data;
temp->next = NULL;

if(pre == NULL)
{
head->next = temp;
return;
}

for(; pre->next!=NULL; pre=pre->next);

pre->next = temp;
}

void list(LNode *head)
{
LNode *curr;
for(curr=head->next; curr!=NULL; curr=curr->next)
{
printf("%d\t", curr->data);
}
}

/* 根據鄰接矩陣構建鄰接表 */
void createAdjList(int matrix[MAX][MAX], int n, LNode *head[])
{
int i, j;

for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(matrix[i][j] != 0)
Insert(head[i], j+1);
}
}
}

D. C語言中如何將結果傳遞給另一個C語言文件

通過函數的傳址參數(引用或指針)或返回值傳遞。
多個人合作時,必須提前約定好介面函數的聲明格式。 (這里的所謂介面函數就是所有可能需要用來互相傳遞結果的函數)

E. C語言中如何傳數據才能保證數據正確

1、傳遞數據類型要一致。
2、考慮傳遞的是值傳遞還是地址傳遞。值傳遞不會影響原始數據,地址傳遞如果對數據進行修改會直接影響到原始數據。

F. C語言數據傳送

參考代碼:

#include<stdio.h>
intmain()
{
inta[100],i,j;
for(i=0;i<100;i++)
{
if(0==i%2)
{
a[i]=2;
}
else
{
a[i]=1;
}
}
for(j=0;j<100;j++)
{
printf("%d",a[j]);
}
printf(" ");
return0;
}

另外,數組a[100]中沒有a[100]這個元素,C語言中數組元素下標是從0開始的。

G. c語言如何傳送參數

main()主函數
每一C 程序都必須有一main()函數, 可以根據自己的愛好把它放在程序的某
個地方。有些程序員把它放在最前面, 而另一些程序員把它放在最後面, 無論放
在哪個地方, 以下幾點說明都是適合的。
1. main() 參數
在Turbo C2.0啟動過程中, 傳遞main()函數三個參數: argc, argv和env。
* argc: 整數, 為傳給main()的命令行參數個數。
* argv: 字元串數組。
在DOS 3.X 版本中, argv[0] 為程序運行的全路徑名; 對DOS 3.0
以下的版本, argv[0]為空串("") 。
argv[1] 為在DOS命令行中執行程序名後的第一個字元串;
argv[2] 為執行程序名後的第二個字元串;
...
argv[argc]為NULL。
*env: 安符串數組。env[] 的每一個元素都包含ENVVAR=value形式的字元
串。其中ENVVAR為環境變數如PATH或87。value 為ENVVAR的對應值如C:\DOS, C:
\TURBOC(對於PATH) 或YES(對於87)。
Turbo C2.0啟動時總是把這三個參數傳遞給main()函數, 可以在用戶程序中
說明(或不說明)它們, 如果說明了部分(或全部)參數, 它們就成為main()子程序
的局部變數。
請注意: 一旦想說明這些參數, 則必須按argc, argv, env 的順序, 如以下
的例子:
main()
main(int argc)
main(int argc, char *argv[])
main(int argc, char *argv[], char *env[])
其中第二種情況是合法的, 但不常見, 因為在程序中很少有隻用argc, 而不
用argv[]的情況。
以下提供一樣常式序EXAMPLE.EXE, 演示如何在main()函數中使用三個參數:
/*program name EXAMPLE.EXE*/
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[], char *env[])
{
int i;
printf("These are the %d command- line arguments passed to
main:\n\n", argc);
for(i=0; i<=argc; i++)
printf("argv[%d]:%s\n", i, argv[i]);
printf("\nThe environment string(s)on this system are:\n\n");
for(i=0; env[i]!=NULL; i++)
printf(" env[%d]:%s\n", i, env[i]);
}
如果在DOS 提示符下, 按以下方式運行EXAMPLE.EXE:
C:\example first_argument "argument with blanks" 3 4 "last but
one" stop!
注意: 可以用雙引號括起內含空格的參數, 如本例中的: " argument
with blanks"和"Last but one")。
結果是這樣的:
The value of argc is 7
These are the 7 command-linearguments passed to main:
argv[0]:C:\TURBO\EXAMPLE.EXE
argv[1]:first_argument
argv[2]:argument with blanks
argv[3]:3
argv[4]:4
argv[5]:last but one
argv[6]:stop!
argv[7]:(NULL)
The environment string(s) on this system are:
env[0]: COMSPEC=C:\COMMAND.COM
env[1]: PROMPT=$P$G /*視具體設置而定*/
env[2]: PATH=C:\DOS;C:\TC /*視具體設置而定*/

應該提醒的是: 傳送main() 函數的命令行參數的最大長度為128 個字元 (包
括參數間的空格), 這是由DOS 限制的。

H. c語言形參和實參是怎樣傳遞數據的

我簡單描述一下~c語言傳遞參數機構是這樣的~非指針類的數據傳遞參數時傳數值,指針類數據傳遞參數時傳地址
(這里數組名也算指針)
比如
int max(int a,int b);
這時候如果調用這個函數max(x1,x2);僅僅將x1和x2的數值傳遞給函數max,a與x1佔有不同的內存區域
int max(int *a,int *b);
這時候如果調用這個函數max(&x1,&x2);則將x1、x2的地址傳遞給a、b,a指向x1的地址,也就是說a可以操控x1的數值。

如果想具體了解可以參看譚浩強教授寫的~c語言程序設計~很好很強大~

I. C語言中參數傳遞有什麼特點

C語言中參數傳遞 分類及特點:
1、值傳遞: 在函數調用時,發生的數據傳送是單向的。 即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。
2、地址傳遞:可以實現地址互換。

3、引用傳遞:與地址傳遞一樣,可以實現地址互換,但該傳遞僅適用於C++語言。

J. c語言函數調用時,參數是如何傳遞的

建立中間變數(形參),把實參值賦值給中間變數,當被調函數返回值時,系統釋放掉中間變數。

在程序中通過對函數的調用來執行函數體,其過程與其它語言的子程序調用相似。對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數、變數或其它構造類型數據及表達式。各實參之間用逗號分隔。

函數作為表達式中的一項出現在表達式中,以函數返回值參與表達式的運算。這種方式要求函數是有返回值的。例如:z=max(x,y)是一個賦值表達式,把max的返回值賦予變數z。



(10)c語言數據傳遞的基本要求擴展閱讀:

C語言中又規定在以下幾種情況時可以省去主調函數中對被調函數的函數說明。

1、如果被調函數的返回值是整型或字元型時,可以不對被調函數作說明,而直接調用。這時系統將自動對被調函數返回值按整型處理。例8.2的主函數中未對函數s作說明而直接調用即屬此種情形。

2、當被調函數的函數定義出現在主調函數之前時,在主調函數中也可以不對被調函數再作說明而直接調用。例如例8.1中,函數max的定義放在main 函數之前,因此可在main函數中省去對max函數的函數說明int max(int a,int b)。

3、如在所有函數定義之前,在函數外預先說明了各個函數的類型,則在以後的各主調函數中,可不再對被調函數作說明。