C là một ngơn ngữ lập trình có cấu trúc, tuy vậy nó vẫn chứa một số câu lệnh làm phá vớ cấu trúc của chương trình:
Bài 11 Các Kiểu dữ liệu Nâng cao và Sắp xếp Mục tiêu:
11.1.6 Truyền tham số kiểu cấu trúc
Kiểu tham số của một hàm có thể là cấu trúc. Đây là một phương tiện hữu dụng khi ta muốn truyền một nhóm các thành phần dữ liệu có quan hệ logic với nhau thơng qua một biến thay vì phải truyền từng thành phần một. Tuy nhiên, khi một cấu trúc được sử dụng như một tham số, cần phải lưu ý rằng kiểu của tham số thực phải trùng với kiểu của tham số hình thức.
Chẳng hạn như, một cấu trúc được khai báo để lưu trữ tên, mã số khách hàng và số tiền gửi gốc vào tài khoản của khách hàng. Dữ liệu được nhập trong hàm main(), việc toán số tiền lãi phải trả được thực hiện bằng cách gọi hàm intcal() có một tham số kiểu cấu trúc. Đoạn lệnh như sau:
#include <stdio.h>
struct strucintcal /* Defines the structure */ { char name[20]; int numb; float amt; }; int main() {
struct strucintcal xyz; /* Declares a variable */ int intcal(struct strucintcal);
clrscr();
/* Accepts data into the structure */ printf("\nEnter Customer name: "); gets(xyz.name);
printf("\nEnter Customer number: "); scanf("%d", &xyz.numb);
printf("\nEnter Principal amount: "); scanf("%f", &xyz.amt);
intcal(xyz); /* Passes the structure to a function */ getch();
}
int intcal(struct strucintcal abc) {
float si, rate = 5.5, yrs = 2.5; /* Computes the interest */
si = (abc.amt * rate * yrs) / 100;
printf ("\nThe customer name is %s", abc.name); printf("\nThe customer number is %d", abc.numb); printf("\nThe amount is %f", abc.amt);
printf("\nThe interest is %f", si); return;
}
Kết quả của chương trình trên được minh họa như sau: Enter Customer name: Jane
Enter Customer number: 6001 Enter Principal Amount: 30000 The customer name is Jane The customer number is 6001
The amount is 30000.000000 The interest is 4125.000000
Có thể định nghĩa một cấu trúc mà khơng có nhãn. Điều này hữu dụng khi một biến được khai báo cùng lúc với định nghĩa cấu trúc của nó. Nhãn sẽ khơng cần thiết trong trường hợp này.