1. 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語言程序設計~很好很強大~
2. 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 限制的。
3. 在C語言中,函數實參與形參之間的數據傳遞方式是( )傳遞方式。
函數實參與形參之間的數據傳遞方式是( 值傳遞)傳遞方式,在C語言中,數據傳遞方式有值傳遞和引用傳遞,值傳遞:傳值,實際是把實參的值賦值給行參,相當於。
那麼對行參的修改,不會影響實參的值 。引用傳遞: 實際是傳值的一種特殊方式,只是他傳遞的是地址,不是普通的賦值,那麼傳地址以後,實參和行參都指向同一個對象,因此對形參的修改會影響到實參。
(3)c語言程序之間怎麼傳遞數據擴展閱讀
傳值調用中,只使用了實參的值。傳值調用機制里,形參是一個局部變數,其初始值為相應實參的值。在引用調用機制里,將實參的地址傳遞給形參,從表面上看是以實參變數取代形參,因此任何發生在形參上的改變實際上都發生在實參變數上。
引用傳遞是將變數的內存地址傳遞給方法,方法操作變數時會找到保存在該地址的變數,對其進行操作。會對原變數造成影響。可以將一個變數通過引用傳遞給函數,這樣該函數就可以修改其參數的值。
4. C語言如何簡單實現眾多函數之間大量數據傳遞
必須指針啦
5. 求兩個c語言程序間數據傳輸方法
有點像socket編程 看看相關方面的書籍
也可以用本機的網卡跟埠實現
6. c語言程序,求參數傳遞,在線等
1.參數傳遞
如果只是要讀到數組裡面的值,可以這樣定義一個函數
void ReadArray ( int a[ ]/*數組名*/ , int length/*數組長度*/) ;
如果要更改數組內的值,就要這樣定義
void UpdateArray( int (*a)[N] , int length );
舉例說明如下:
#include <stdio.h>
#define N 5
void ReadArray(int [],int);
void UpdateArray(int (*)[N], int);
int main()
{
int a[N]={ 1,2,3,4,5 };
ReadArray(a,N);
UpdateArray(&a, N);
ReadArray(a,N);
return 0;
}
//讀數組內容
void ReadArray(int a[], int len)
{
int i;
for(i=0; i<len; i++)
{
printf("%6d ",a[i]);
if((i+1)%5==0)
putchar(10);//每五個換行一次
}
}
//更改數組內容
void UpdateArray(int (*a)[N],int len)
{
int i;
for(i=0; i<len; i++)
(*a)[i]=0;
}
2.菜單循環問題,可參考下列語句
char order='\0';
while(order!='n' && order!='N')
{
printf("continue (Y/N)?\n");
order=getchar();
}
對於你的程序,可以這樣寫
while(1)
{
scanf ( "%d" , &m);
switch (m)
{
case 0: exit(0);
case 1: /*添加你要做的事*/
break;
case 2: /*添加你要做的事*/
break;
default: /*添加你要做的事*/
break;
}
}
7. 在C語言中,模塊之間傳遞數據方式有哪些按照模塊化程序設計的思想,應該提倡使用哪些方式來傳遞數據
傳值 call by value, 不返回改變數。
傳址 call by refrence, 可改變該變數。
都可以用,是需要而定。
還有一種,就是設置全局變數,大家共用,非模塊化方式,不提倡。
8. C語言中如何將結果傳遞給另一個C語言文件
通過函數的傳址參數(引用或指針)或返回值傳遞。
多個人合作時,必須提前約定好介面函數的聲明格式。 (這里的所謂介面函數就是所有可能需要用來互相傳遞結果的函數)
9. c語言兩個cpp文件如何傳遞數據
創建一個頭文件,包含你要聲明的部分,然後在不同的cpp文件中包含那個頭文件。寫法:假如你定義的頭文件為Head.h#ifndef__HEAD_H__#define__HEAD_H__//你要聲明到不同文件中的部分#endif